Проблема с Powershell v3.0

У меня возникают проблемы с этой командой:

gc .\domains.txt | Get-ADDomain

Как следует из названия, domain.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 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

Update

Если я запустил сервер:

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

он отлично работает

TRACE

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

Сервер: http://pastebin.com/sRVJHaCU

Рабочая станция: http://pastebin.com/kj3JV6nV

Заранее спасибо

Ответ 1

Я нашел статью, которая может помочь.

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

Из внешнего вида вашего script вы предоставляете сервер, используя текстовый файл. Возможно ли, что проблема заключается в том, что сервер Windows 2008, на котором работает PowerShell script, находится не в том же домене или у пользователя, у которого вы вошли в систему, поскольку не имеет доступа к доменам, в которых находятся другие серверы?

из вышеприведенной статьи:

-Если параметр Server указан и параметр Credential не указан: - Домен установлен в домен указанного сервера, и командлет проверяет, чтобы сервер находился в домене LocalComputer или LoggedOnUser. Затем учетные данные текущего зарегистрированный пользователь используется для получения домена. Ошибка возвращается, когда сервер не находится в домене LocalComputer или LoggedOnUser.

Вы можете попробовать добавить дополнительные параметры для командлета Get-ADDomain, такие как -Identity, -AuthType и -Credential

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

Ответ 2

Проблема с Powershell v3.0

Я просто попытался запустить командлет gc.\text.txt | Get-ADDomain 'из окна виртуального сервера 2008 R2, который у меня есть. Я построил текстовый файл в следующем формате:

 Domain1
 Domain2
 Domain3

Единственное, что нужно знать, это то, что каждый домен находится в собственной строке в текстовом файле. Я могу понять, почему один синтаксис работал, когда вы передавали STDOUT в:

%{ Get-ADDomain $_} 

потому что вы перебираете всю информацию, содержащуюся в текстовом файле, и выполняете только команду cmdlet за одно значение за раз. К сожалению, у меня нет пакета RSAT на рабочем столе Win 8, поэтому я не могу проверить его на рабочем столе. Надеюсь, это немного поможет.