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

对于受信任域中的服务器,我在创建 pssession 时传递了 $cred = 获取凭据,但是当我运行时

$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 回答