51 votes

Problème de tuyauterie avec Powershell v3.0

J'ai des difficultés avec cette commande :

gc .\domains.txt | Get-ADDomain

Comme son nom l'indique, domains.txt contient une liste d'Active Directory à interroger (tous les domaines se trouvent dans la même forêt).

Si je l'exécute sur ma machine Windows 8, tout fonctionne bien et j'obtiens les résultats attendus, mais sur un serveur membre Windows 2008 R2 SP1 (pas un DC) avec WMF 3.0, je n'obtiens des résultats que pour le premier domaine de la liste et pour les autres :

Get-ADDomain : A referral was returned from the server

Si j'interroge un domaine de la liste avec :

Get-ADDomain <Domain name here>

cela fonctionne bien.

Mon poste de travail

Microsoft Windows 8 Enterprise (6.2.9200) x64

PS D:\Tools\Powershell> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18010
BuildVersion                   6.2.9200.16384
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2

Serveur

Microsoft Windows Server 2008 R2 Standard SP1 (6.1.7601) x64

PS C:\Tools\Powershell> $PSVersionTable

Name                           Value
----                           -----
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0}
SerializationVersion           1.1.0.1
BuildVersion                   6.2.9200.16398
PSVersion                      3.0
CLRVersion                     4.0.30319.269
PSRemotingProtocolVersion      2.2

Mise à jour

Si je fonctionne sur le serveur :

gc .\domains.txt | %{ Get-ADDomain $_ }

il fonctionne bien

TRACE

trace-command -Name ParameterBinding { "DOMAIN_1","DOMAIN_2" | Get-ADDomain } -PSHost

Serveur : http://pastebin.com/sRVJHaCU

Poste de travail : http://pastebin.com/kj3JV6nV

Merci d'avance

1voto

MonkeyWrench Points 286

J'ai trouvé un article qui pourrait vous aider.

http://technet.microsoft.com/en-us/library/ee617224.aspx

D'après l'apparence de votre script, vous fournissez le serveur en utilisant le fichier texte. Est-il possible que le problème vienne du fait que le serveur Windows 2008 sur lequel vous exécutez le script PowerShell ne se trouve pas dans le même domaine ou que l'utilisateur sous lequel vous êtes connecté n'a pas accès aux domaines dont font partie les autres serveurs ?

extrait de l'article ci-dessus :

-Si le paramètre Server est spécifié et que le paramètre Credential n'est pas spécifié : --Le domaine est défini sur le domaine du serveur spécifié et la cmdlet vérifie que le serveur se trouve dans le domaine de l'utilisateur. LocalComputer ou LoggedOnUser. Les informations d'identification de l'utilisateur connecté sont utilisées pour obtenir le domaine. Une erreur est renvoyée si le serveur ne fait pas partie du domaine de LocalComputer ou LoggedOnUser.

Vous pouvez essayer d'ajouter les paramètres supplémentaires pour la commandlet Get-ADDomain tels que -Identity, -AuthType, et -Credential.

Get-ADDomain [-Identity] [-AuthType { | |]]. }] [-Credential ] [-Server ] []

0voto

Dion Pezzimenti Points 207

Problème de tuyauterie avec Powershell v3.0

Je viens d'essayer d'exécuter la cmdlet 'gc . \text.txt | Get-ADDomain' à partir d'un serveur virtuel 2008 R2 dont je dispose. J'ai construit un fichier texte au format suivant :

 Domain1
 Domain2
 Domain3

Une chose dont il faut s'assurer est que chaque domaine se trouve sur sa propre ligne dans le fichier texte. Je peux comprendre pourquoi la syntaxe unique a fonctionné lorsque vous avez pipé le STDOUT vers :

%{ Get-ADDomain $_} 

parce que vous parcourez en boucle toutes les informations contenues dans le fichier texte et que la cmdlet ne travaille que sur une seule valeur à la fois. Malheureusement, je n'ai pas le paquet RSAT sur mon bureau Win 8, donc je ne peux pas tester à partir de mon bureau. J'espère que cela vous aidera un peu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X