首页 > 解决方案 > 指定服务器时 Get-ADUser 后执行时间较长

问题描述

我有一个查询 AD 并处理结果的脚本:

$users=Get-ADUser -filter {...} -Properties ...
try { 
   foreach($user in $users) {
     $obj=new-object PSObject @property {...}
     [void]($arraylist.add($obj))
   }
} 
catch {...}

Get-ADUser大约需要 1.5 秒并返回 1000+ 行,整个块try大约需要 0.5 秒。

@Properties {...}部分仅处理$user字段,与 AD 或任何其他资源没有进一步的交互。该try块运行没有错误。

如果现在我将第一行更改为

$users=Get-ADUser -filter {...} -Properties ... -Server <someDC>

只需添加一个-Server参数,Get-ADUser命令大约需要 3 秒,try20+秒

我尝试了很多次以确保远程连接建立良好而没有任何改进。我尝试了每个可用的 DC,并且每次都获得了相同的执行时间。如果我删除-Server参数,我会恢复原来的执行时间。

该问题与本文中描述的问题有相似之处,但我的问题是在之后执行的代码Get-ADUser,而不是Get-ADUser本身。

非常令人不安的是,它是之后变慢的代码。

你有什么线索吗?

DC: Win2008R2
Client: Win7, Powershell5.1, AD Management Tools locally installed.

标签: powershellactive-directory

解决方案


推荐阅读