如何专门检索特定属性?
我知道在select-object
这方面似乎有些过时的 cmdlet:
PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties * | Select-Object Description,Streetaddress,State,postalcode | format-list
一个优化的版本是:
PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties Description,Streetaddress,State,postalcode
为什么-property
开关不只返回输入的属性?
这是因为
-properties
开关不是格式化工具,它旨在作为一种接收比已包含的默认值更多信息的方式。来自Get-ADOrganizationalUnit文章。
如果要格式化输出,最好坚持使用该
select-object
语句。您需要同时使用这两者,以指定要从 DC 中检索哪些属性,以及要选择并最终显示哪些属性。
-Properties *
是一个潜在的性能攻击者,因为 DSA 将需要返回具有值的每个属性,包括证书和您可能不需要的其他二进制值在使用 AD cmdlet 的脚本中,我将使用splatting运算符 (
@
) 并执行以下操作:如果您始终如一地这样做,您的脚本将变得非常容易更新/编辑,因为每个查询都以相同的可读 hastable 格式定义
如果我在 shell 中并且中间单线器开始考虑我需要的属性,我会做类似的事情(使用
Get-ADUser
作为一个例子):还可以考虑使用 LDAP 或 ADSI http://blogs.technet.com/b/heyscriptingguy/archive/2010/12/01/use-powershell-to-query-active-directory-from-the-console.aspx