Problema de la tubería Powershell v3.0
active-directory powershell-v3.0 (2)
Tengo problemas con este comando:
gc ./domains.txt | Get-ADDomain
Como su nombre lo indica, domains.txt contiene una lista de Active Directory para consultar (todos los dominios están en el mismo bosque).
Si lo ejecuto en mi máquina con Windows 8 todo funciona bien y obtengo los resultados esperados, en cambio en un servidor miembro de Windows 2008 R2 SP1 (no un DC) con WMF 3.0 obtengo el resultado solo del primer dominio en la lista y para el otros:
Get-ADDomain : A referral was returned from the server
Si consulto un dominio en la lista con:
Get-ADDomain <Domain name here>
funciona bien.
Mi estación de trabajo
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
Servidor
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
Actualizar
Si corro en el servidor:
gc ./domains.txt | %{ Get-ADDomain $_ }
funciona bien
RASTRO
trace-command -Name ParameterBinding { "DOMAIN_1","DOMAIN_2" | Get-ADDomain } -PSHost
Servidor: http://pastebin.com/sRVJHaCU
Estación de trabajo: http://pastebin.com/kj3JV6nV
Gracias por adelantado
Encontré un artículo que puede ayudar.
http://technet.microsoft.com/en-us/library/ee617224.aspx
Desde el aspecto de su secuencia de comandos, está proporcionando el servidor utilizando el archivo de texto. ¿Es posible que el problema sea que el servidor de Windows 2008 en el que está ejecutando el script de PowerShell no está en el mismo dominio o en el que está conectado, ya que no tiene acceso a los dominios donde los otros servidores son miembros?
fragmento del artículo anterior:
-Si se especifica el parámetro Servidor y no se especifica el parámetro Credencial: --El dominio se establece en el dominio del servidor especificado y el cmdlet comprueba que el servidor se encuentre en el dominio de LocalComputer o LoggedOnUser. Luego, las credenciales del usuario con sesión iniciada se utilizan para obtener el dominio. Se devuelve un error cuando el servidor no está en el dominio de LocalComputer o LoggedOnUser.
Puede intentar agregar los parámetros adicionales para el comando Get-ADDomain, como -Identity, -AuthType y -Credential
Get-ADDomain [-Identity] [-AuthType {| }] [-Credential] [-Server] []
Problema de la tubería Powershell v3.0
Intenté ejecutar el cmdlet ''gc. / Text.txt | Get-ADDomain ''desde un cuadro virtual Server 2008 R2 que tengo. Creé un archivo de texto en el siguiente formato:
Domain1
Domain2
Domain3
Una cosa de la que debemos estar seguros es que cada dominio está en su propia línea en el archivo de texto. Puedo entender por qué la sintaxis funcionaba cuando canalizabas el STDOUT a:
%{ Get-ADDomain $_}
porque está recorriendo toda la información contenida en el archivo de texto y solo hace que el cmdlet trabaje en un solo valor a la vez. Lamentablemente, no tengo el paquete RSAT en mi escritorio Win 8, así que no puedo probarlo desde mi escritorio. Espero que esto ayude un poco.