【发布时间】:2019-04-06 03:20:42
【问题描述】:
我正在从域中的所有用户那里获取一组属性。如果我没有指定特定的域控制器,查询会在不到一秒的时间内返回有效结果。如果我指定一个目标控制器,即使在我最近的域控制器上,结果也需要 18 秒才能返回。唯一的区别是我使用-Server $serverName 定位服务器。
如何在指定服务器时获得相同的性能?这是用户界面驱动的,因此在数据更改后等待 18 秒(最少)是很长的等待时间。在函数$serverName 中提取存储的字符串值,因此不执行任何处理。
另外,如果我不指定服务器,有没有办法知道哪个服务器Get-ADuser 提取了它的信息?
Connected-Server: * [Server not specified] >> Elapsed time 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
}
【问题讨论】:
-
所以我无法帮助您解决您所看到的性能问题,除了询问您何时在未指定服务器的情况下运行它,是您在会话期间运行的第一个 AD 相关命令还是其他命令以前运行过吗?如果它不是您会话中的第一个 AD 命令,则您可能有一个现有的连接并且这就是正在使用的连接,而如果您提供 -server 一个新的连接正在建立。除此之外,环境变量
$env:LogonServer至少应该能够告诉您默认使用哪个 DC。
标签: powershell active-directory