Get-ADUser慢查询

问题描述 投票:0回答:1

我不理解的东西。请参见以下两个代码示例。

  $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上执行以下命令,但这要花那么长时间是没有意义的。

谁能启发我...

powershell hash active-directory
1个回答
0
投票
由于您正在查找域中的每个用户,因此我希望该查询花费很长时间。但是,查询被缓存。因此,如果您立即在同一DC上再次尝试查询,则无需等待5分钟即可立即开始获得结果。

当您手动指定DC时,您可能只是碰到了另一个DC,因此还没有缓存查询。我怀疑如果您再次尝试第二个查询,您会立即获得结果。

© www.soinside.com 2019 - 2024. All rights reserved.