Powershell 使用-Properties时,将Get-ADObject结果保存到变量会变慢
我正在尝试运行以下cmdlet并将其输出保存到我的$query变量中Powershell 使用-Properties时,将Get-ADObject结果保存到变量会变慢,powershell,powershell-3.0,Powershell,Powershell 3.0,我正在尝试运行以下cmdlet并将其输出保存到我的$query变量中 $query = Get-ADObject -Server $ldapServer -Credential $account -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN -Properties "GivenNam
$query = Get-ADObject -Server $ldapServer -Credential $account -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN -Properties "GivenName", "Mail"
LDAP查询运行得非常好(在6000多个LDAP数据库上大约10秒)。返回的结果集包含大约150个用户对象。在尝试对$query变量执行以下操作时,会发生奇怪的事情:
$query
或:
迭代速度非常慢(每个对象大约10-30秒)
当查询未保存到变量时,一切工作正常且快速,如运行以下命令:
Get-ADObject -Server $ldapServer -Credential $account -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN -Properties "GivenName", "Mail"
同样,在使用格式化cmdlet时,如下所示:
$query = Get-ADObject -Server $ldapServer -Credential $account -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN -Properties "GivenName", "Mail" | ft
但是,我需要“对象”来进行编辑。因此,保存文本输出在这里对我没有帮助。 更令人困惑的是,当仅通过调用“$query”进行一次调用时,在所有后续调用中,对一次打印的对象的以下调用都会得到快速处理。 另外,当从'Get-ADObject'cmdlet中排除'-Properties'参数时,保存到$query变量的结果也会被快速处理参数“-Properties”似乎会导致其速度减慢(因此,考虑到我有足够的可用内存,我猜这与内存限制无关) 有人知道吗
在
pscustomobject
$query = Get-ADObject -Server $ldapServer -Credential $account `
-LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN `
-Properties "GivenName", "Mail" | select givenname, mail
导出变量$query后,可以快速枚举/显示。我正计划再次导入它。。。但后来发现变量中的速度问题消失了
不过我更喜欢CB的答案。你试过使用just get aduser吗?你只需要givenname和mail吗?我需要更多,但为了限制可能是内存问题的风险,我将属性限制在这两个作品中!然而,我仍然很好奇为什么会发生这个错误。也许查询返回了一个包含很多信息的对象。通常我使用Quest cmdlet来完成这类工作。@masi到LDAP服务器的往返可能会有所不同吗?您可以运行NetMon(网络监视器)来获取LDAP数据包跟踪,看看是否是这种情况。不,不是LDAP服务器。现在,它在不到20秒内响应了所有6000个条目。但是,当将它们保存到Powershell中的变量中时,遍历该变量的速度非常慢。
$query = Get-ADObject -Server $ldapServer -Credential $account `
-LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN `
-Properties "GivenName", "Mail" | select givenname, mail
$query = Get-ADObject -Server $ldapServer -Credential $account `
-LDAPFilter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -SearchBase $ldapDN `
-Properties "GivenName", "Mail"
$query| Export-Clixml c:\temp\myquery.xml