1

[adsisearcher] にクエリを実行して、信頼できるドメインと信頼できないドメインのサーバーについて、いくつかのサーバーの OU 情報を取得したいと考えていました。

$session = New-PSSession -ComputerName icvmm02

Invoke-Command -Session $session -ScriptBlock {
$compname= (Get-WmiObject "Win32_Computersystem" -namespace "root\CIMV2" -computername $comp).name
$searcher = [adsisearcher]"(&(ObjectCategory=computer)(Name=$compname))"
$ou= $searcher.FindOne() | Select-Object path
$serverou = $ou.path
}
$adou= (Invoke-Command -Session $session  -ScriptBlock { $serverou })
Get-PSSession | Remove-PSSession

信頼できるドメイン内のサーバーの場合、$cred = pssession の作成中に資格情報を取得しますが、実行すると

$compname= (Get-WmiObject "Win32_Computersystem" -namespace "root\CIMV2" -computername $comp).name
$searcher = [adsisearcher]"(&(ObjectCategory=computer)(Name=$compname))"
$ou= $searcher.FindOne() | Select-Object path

それは私にエラーを与える

Exception calling "FindOne" with "0" argument(s): "An operations error occurred.
"
At line:1 char:27
+     $ou= $searcher.FindOne <<<< () | Select-Object path
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
$serverou = $ou.path

誰かがこれを整理するのを手伝ってくれませんか。

4

2 に答える 2

1

原因はわかりませんが、リモート セッションで ADSI インターフェイスが機能しません。ドメイン内のコンピューターのドメインの DN を取得することさえできません。これをローカルで実行できますが、リモートでは実行できません。

icm { ([adsi]"").distinguishedName }  #works

icm -Session $s -ScriptBlock { ([adsi]"").distinguishedName } #doesn't work
于 2011-07-21T11:57:50.717 に答える
0

FindOne メソッドの呼び出しに問題があるようです。これで $searcher オブジェクトの詳細を確認できます。

$searcher | gm

findOne メソッドは、それが取るパラメータのリストとともにそこにあるはずです。

ただし、次のタイプで試してみました。

[adsisearcher] | gm | sort name

そしてFindOneメソッドはありません - 本当にadsisearcherのメソッドですか?

于 2011-07-21T13:05:35.713 に答える