无法查询受信任域的[adsisearcher](PowerShell)

时间:2011-07-21 08:37:50

标签: arrays powershell powershell-remoting

我想查询[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

有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

我不是原因,但ADSI接口在远程会话中不起作用。我甚至无法在我的域中获得计算机域的DN。我可以让它在本地运行,但不能远程运行:

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

icm -Session $s -ScriptBlock { ([adsi]"").distinguishedName } #doesn't work

答案 1 :(得分:0)

看起来FindOne方法调用存在问题 - 您可以通过此查找有关$ searcher对象的更多信息;

$searcher | gm

findOne方法应该包含所需参数的列表。

虽然,我刚刚尝试了类型:

[adsisearcher] | gm | sort name

并且没有FindOne方法 - 你确定它是adsisearcher的方法吗?