我有一个查询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秒,而try
块需要 20 + sec
我尝试了很多次,以确保远程连接建立良好,没有任何改善。我尝试了每个可用的DC,每次执行时间都非常相同。如果删除了-Server
参数,我将获得原始的执行时间。
问题与this post中描述的问题相似,但是我的问题是在Get-ADUser
的之后而不是由Get-ADUser
执行的代码本身。
非常令人不安的是它的代码之后变慢了。
你有什么线索吗?
DC: Win2008R2
Client: Win7, Powershell5.1, AD Management Tools locally installed.