gpt4 book ai didi

powershell - 慢 Get-ADUser 查询

转载 作者:行者123 更新时间:2023-12-02 23:50:32 24 4
gpt4 key购买 nike

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

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

谁能给我解惑...

补充:我们谈论的是 26'000 个帐户。

最佳答案

我能够复制这一点。当您指定 -Server 时,行为确实会改变参数 vs. 当你不这样做时。

我用过 Process Monitor观察网络事件,并且在循环使用 -Server 返回的结果时,它肯定是在与 DC 通信。范围。

我无法解释为什么,但似乎是 ADUser返回的对象未填充来自搜索的属性。因此,当它们被访问时,它会从 DC 加载属性。在访问数组中的一个特定元素时,我可以看到这一点:

$LDAPResults1[1000]

它显示了属性,但我也在 Process Monitor 中看到了网络事件。而从不使用 -Server 时返回的结果中访问一个元素时,我没有看到网络事件范围。

所以这可以解释正在发生的事情,但不能解释原因。我真的不知道为什么。

但是,我了解到,如果您在与 AD 交谈时想要性能,则必须放弃所有“简单”的方法并自己做事。例如,使用 .NET DirectoryEntry DirectorySearcher 直接类,这可以在 PowerShell 中使用“类型加速器”完成 [adsi][adsisearcher] .例如,这将执行相同的操作并始终如一地执行:
$dc = "dc.test.test.ch"
$searchBase = "ou=test,dc=test,dc=ch"
$searcher = [adsisearcher]::new([adsi]"LDAP://$dc/$searchBase", "(objectCategory=user)")

$searcher.PropertiesToLoad.Add("sAMAccountName") > $null
$searcher.PropertiesToLoad.Add("extensionAttribute13") > $null

$searcher.PageSize = 1000

$LDAPElements1=@{}
foreach ($result in $searcher.FindAll()) {
$LDAPElements1.Add($result.Properties["sAMAccountName"][0], $result.Properties["extensionAttribute13"][0])
}

关于powershell - 慢 Get-ADUser 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60418494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com