Powershell v3.0pipe道问题
我在使用这个命令时遇到了问题:
gc .\domains.txt | Get-ADDomain
顾名思义,domains.txt包含要查询的Active Directory列表(所有域都在同一个林中)。
如果我在Windows 8机器上运行它,一切正常,我得到了预期的结果,而不是在Windows 2008 R2 SP1成员服务器(不是DC)与WMF 3.0我得到的结果只能从列表中的第一个域和其他:
Get-ADDomain : A referral was returned from the server
如果我查询列表中的域名:
Get-ADDomain <Domain name here>
它工作正常。
我的工作站
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
服务器
Microsoft Windows Server 2008 R2标准版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
更新
如果我在服务器上运行:
gc .\domains.txt | %{ Get-ADDomain $_ }
它运行良好
跟踪
trace-command -Name ParameterBinding { "DOMAIN_1","DOMAIN_2" | Get-ADDomain } -PSHost
服务器: http : //pastebin.com/sRVJHaCU
工作站: http : //pastebin.com/kj3JV6nV
提前致谢
我find了一篇可能有帮助的文章。
http://technet.microsoft.com/en-us/library/ee617224.aspx
从脚本的外观来看,您正在使用文本文件提供服务器。 是否有可能问题是您运行PowerShell脚本的Windows 2008服务器不在同一个域中,或者您所login的用户是否无权访问其他服务器是成员的域?
从上面的文章片段:
– 如果指定了Server参数并且未指定Credential参数: – 将域设置为指定服务器的域,并且cmdlet将检查以确保服务器位于LocalComputer或LoggedOnUser的域中。 然后使用当前login用户的凭据来获取域。 当服务器不在LocalComputer或LoggedOnUser的域中时,将返回错误。
您可以尝试为Get-ADDomain命令行添加其他参数,例如-Identity,-AuthType和-Credential
Get-ADDomain [-Identity] [-AuthType {| }] [-Credential] [-Server] []
Powershell v3.0pipe道问题
我只是试图运行cmdlet'gc。\ text.txt | Get-ADDomain'从我拥有的虚拟Server 2008 R2框中。 我使用以下格式构build了一个文本文件:
Domain1 Domain2 Domain3
有一点可以肯定的是,每个域都在文本文件中是自己的行。 我可以理解为什么一个语法工作时,你把标准输出到:
%{ Get-ADDomain $_}
因为您正在循环访问文本文件中包含的所有信息,并且只能使cmdlet一次处理一个值。 不幸的是,我的Win 8桌面上没有RSAT软件包,所以无法从桌面进行testing。 希望这有一点帮助。