2016-05-18 2 views
0

Je suis en train d'utiliser PowerShell JEA (Just Enough administration) sur un ordinateur Windows Server 2012 R2 serveur où j'ai installé WMF 5.PowerShell 5 Remoting - JEA avec RunAsCredential et Select-Object -Unique

Je dois rendre visible à un groupe d'utilisateurs non-administrateur 1 fonction personnalisée uniquement qui repose sur un autre module installé localement. Cette fonction ne nécessite pas de privilèges d'administration mais doit être exécutée dans le contexte d'un compte de domaine particulier.

Je crée une nouvelle fonction de rôle avec ma fonction personnalisée répertoriée dans la section VisibleFunctions, affectez ce rôle à mon groupe d'utilisateurs dans le fichier de configuration de session (qui contient également RunAsVirtualAccount = $false) et enregistrez cette configuration de session avec le fichier de configuration et le RunAsCredential paramètre.

Lorsque vous utilisez Get-PSSessionCapability localement sur le serveur avec un compte non-administrateur autorisé, je vois ma fonction personnalisée répertoriée. Lorsque j'utilise Enter-PSSession à partir d'un ordinateur distant (Windows 8.1 avec WMF 5 installé) avec ce point de terminaison contraint, puis que j'utilise Get-Command, la fonction n'est pas répertoriée.

Si je cesse d'utiliser le paramètre RunAsCredential et plutôt utiliser RunAsVirtualACcount = $true (ce qui rendrait ma fonction échouer, mais cela est seulement pour les tests), alors je peux voir ma fonction personnalisée avec la liste Get-Command lorsqu'il est exécuté à distance. Mais dans ce cas, d'essayer d'appeler les résultats de la fonction dans l'erreur suivante, ce qui arrive avant même disparus « RunAs » erreur d'autorisation de compte apparaît:

Select-Object : A parameter cannot be found that matches parameter name 'Unique'. 

L'applet de commande Select-Object est appelée dans le imbriquée 3ème partie module que j'utilise (et donc je ne peux pas le remplacer par une autre fonction).

est ici la sortie de $PSVersionTable sur le serveur:

Name       Value 
----       ----- 
PSVersion      5.0.10586.117 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
BuildVersion     10.0.10586.117 
CLRVersion      4.0.30319.34014 
WSManStackVersion    3.0 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 

sur mon poste de travail Idem sauf pour CLRVERSION qui est 4.0.30319.42000.

Comment puis-je utiliser JEA dans mon scénario, avec un compte de domaine comme RunAsCredential et en appelant mon module tiers et (entre autres) son appel Select-Object -Unique?

Merci,

Jordan

+0

Avez-vous inclus Microsoft.PowerShell.Utility dans vos modules importés? – mjolinor

+0

J'ai juste essayé et ça n'aide pas.Merci – jalliot

Répondre

0

J'ai eu le même problème, ce qui crée un point de terminaison PS comme une enveloppe autour du module PSPKI. Le module PSPKI utilise également l'objet Select, donnant la même erreur. Pour moi, la solution consistait à mettre à jour mon fichier .psrc de point de terminaison pour inclure un AliasDefinition pour Select-Object afin qu'il pointe vers l'objet Select FQDN.

AliasDefinitions = @ {Nom = 'Sélectionner-Objet'; Valeur = 'Microsoft.PowerShell.Utility \ Select-Object'}

Voir aussi: https://jamesone111.wordpress.com/2016/07/01/just-enough-admin-and-constrained-endpoints-part-2-startup-scripts/

Grtx, BvZanten

+0

Bonjour, merci pour le conseil. Cela semble corriger le problème de sélection d'un objet. Mais cela ne résout pas le problème principal: ma fonction personnalisée n'est toujours pas visible lors de l'utilisation de la configuration RunAsCredential. Et je ne peux malheureusement pas utiliser les comptes virtuels dans mon scénario ... – jalliot