50

我在使用此命令时遇到问题:

gc .\domains.txt | Get-ADDomain

顾名思义,domains.txt 包含要查询的 Active Directory 列表(所有域都在同一个林中)。

如果我在我的 Windows 8 机器上运行它,一切正常,我得到预期的结果,而不是在带有 WMF 3.0 的 Windows 2008 R2 SP1 成员服务器(不是 DC)上,我只从列表中的第一个域和其他:

Get-ADDomain : A referral was returned from the server

如果我使用以下命令查询列表中的域:

Get-ADDomain <Domain name here>

它工作正常。

我的工作站

Microsoft Windows 8 企业版 (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

提前致谢

4

2 回答 2

1

我找到了一篇可能有帮助的文章。

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

从脚本的外观来看,您正在使用文本文件提供服务器。问题是否可能是您运行 PowerShell 脚本的 Windows 2008 服务器不在同一个域中,或者您登录的用户无权访问其他服务器所属的域?

上述文章的片段:

- 如果指定了 Server 参数而未指定 Credential 参数: -- 域设置为指定服务器的域,并且 cmdlet 检查以确保服务器在 LocalComputer 或 LoggedOnUser 的域中。然后使用当前登录用户的凭据来获取域。当服务器不在 LocalComputer 或 LoggedOnUser 的域中时返回错误。

您可以尝试为 Get-ADDomain 命令行开关添加其他参数,例如 -Identity、-AuthType 和 -Credential

获取-ADDomain [-Identity] [-AuthType { | }] [-凭据] [-服务器] []

于 2013-04-05T00:28:43.510 回答
0

Powershell v3.0 管道问题

我只是尝试运行 cmdlet 'gc .\text.txt | 从我拥有的虚拟 Server 2008 R2 框中获取-ADDomain'。我以以下格式构建了一个文本文件:

 Domain1
 Domain2
 Domain3

要确定的一件事是,每个域都在文本文件中它自己的行上。我可以理解为什么当您将 STDOUT 传送到以下位置时,一种语法会起作用:

%{ Get-ADDomain $_} 

因为您正在遍历文本文件中包含的所有信息,并且一次只能让 cmdlet 处理一个值。不幸的是,我的 Win 8 桌面上没有 RSAT 包,所以我无法从我的桌面上进行测试。希望这会有所帮助。

于 2013-03-27T00:46:58.200 回答