我不理解的东西。请参见以下两个代码示例。
$LDAPResult1 = Get-ADUser -LDAPFilter "(&(objectCategory=user)(sAMAccountName=*))" -Properties @("distinguishedName","sAMAccountName","extensionAttribute13") -SearchBase "ou=test,dc=test,dc=ch"
$LDAPElements1=@{}
$LDAPResult1 |% {$LDAPElements1.Add($_.SAMAccountName, $_.extensionattribute13)}
与(相比,添加特定服务器询问“ -Server'dc.test.test.ch'”:]:
$LDAPResult1 = Get-ADUser -LDAPFilter "(&(objectCategory=user)(sAMAccountName=*))" -Properties @("distinguishedName","sAMAccountName","extensionAttribute13") -SearchBase "ou=test,dc=test,dc=ch" -Server 'dc.test.test.ch'
$LDAPElements1=@{}
$LDAPResult1 |% {$LDAPElements1.Add($_.SAMAccountName, $_.extensionattribute13)}
第一个代码需要30秒,第二个代码需要5分钟。问题不是AD查询。在两种情况下,这大约需要30秒。但是将结果填充到哈希表中的是区别。似乎在第二种情况下,在填充哈希基石时,从DC请求了一些数据。
也很有趣。当我在第二种情况下执行AD查询之后等待五分钟,然后执行对哈希表的填充时,该命令将花费一秒钟。
我宁愿定义命令连接到哪个服务器,以便在同一DC上执行以下命令,但这要花那么长时间是没有意义的。
谁能启发我...
当您手动指定DC时,您可能只是碰到了另一个DC,因此还没有缓存查询。我怀疑如果您再次尝试第二个查询,您会立即获得结果。