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

0

Powershell v3.0 パイプの問題

コマンドレット「gc .\text.txt |」を実行しようとしました。私が持っている仮想サーバー 2008 R2 ボックスから Get-ADDomain' を取得します。次の形式のテキスト ファイルを作成しました。

 Domain1
 Domain2
 Domain3

確認すべきことの 1 つは、各ドメインがテキスト ファイル内の個別の行にあることです。STDOUTを次のようにパイプしたときに、1つの構文が機能した理由を理解できます。

%{ Get-ADDomain $_} 

これは、テキスト ファイルに含まれるすべての情報をループ処理していて、コマンドレットが一度に 1 つの値に対してしか機能しないためです。残念ながら、Win 8 デスクトップに RSAT パッケージがないため、デスクトップからテストできません。うまくいけば、これは少し役に立ちます。

于 2013-03-27T00:46:58.200 に答える