我正在从域中的所有用户获取一系列属性。如果我不指定特定的域控制器,查询将在不到一秒的时间内返回有效结果。如果我指定目标控制器,即使在最近的域控制器上,结果也需要 18 秒才能返回。唯一的区别是我使用了目标服务器-Server $serverName
.
如何在指定服务器的同时获得相同的性能?这是用户界面驱动的,因此数据更改后等待 18 秒(最少)是一个很长的时间。在函数中$serverName
提取存储的字符串值,因此不执行任何处理。
另外,有没有办法知道which server Get-ADuser
如果我不指定服务器,会从中提取其信息吗?
已连接服务器:* [未指定服务器] >> 经过时间 HH:MM:SS =
00:00:00.9451947
连接服务器:SERVER1 >> 已用时间 HH:MM:SS = 00:00:42.8815911
连接服务器:SERVER2 >> 已用时间 HH:MM:SS = 00:00:39.8800249
连接服务器:SERVER3 >> 已用时间 HH:MM:SS = 00:00:18.1686541
Function Get-TargetObjectList( $targetSearchBase )
{
$propertyList = "Enabled", "DistinguishedName", "Name", "department", "givenName","sn","displayName","CanonicalName", "Description"
$serverName = Get-CurrentDC # which domain controller name did the user choose from the drop down list?
# if $serverName is “*” then do not target a specific server
if ($serverName -eq "*")
{
$tempObjects = Get-ADUser -Filter * -Properties $propertyList -SearchBase $targetSearchBase
} else {
$tempObjects = Get-ADUser -Filter * -Properties $propertyList -Server $serverName -SearchBase $targetSearchBase
}
Write-Host "Get-TargetObjectList: " $serverName
$targetObjects = $tempObjects | Select-Object -Property $propertyList | Sort-Object -Property Name
return $targetObjects
}
你看过吗Trace-Command
?您可以使用Get-TraceSource
获得一些关于如何减少噪音的想法,但作为起点,请尝试以下操作:
Trace-Command -Name "*" -Expression { Get-ADUser -Filter * -Properties $propertyList -Server $serverName -SearchBase $targetSearchBase }
您可能会知道它挂在哪里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)