我怎样才能找回一个特定的财产?
我知道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开关不是单独返回input的propENTS?
这是因为-properties开关不是一个格式化工具,它的目的是作为一种方式来接收比已经包含的默认值更多的信息。
从Get-ADOrganizationalUnit文章。
指定要从服务器检索的输出对象的属性。 使用此参数来检索未包含在默认集中的属性。
如果你想格式化你的输出,你最好坚持使用select-object语句。
您将需要使用两者来指定要从DC中检索哪些属性,以及要select并最终显示哪些属性。 -Properties *是一个潜在的性能分析器,因为DSA需要返回每个具有值的属性,包括证书和其他二进制值,这些值可能不需要
在使用AD cmdlet的脚本中,我将使用splatting操作符( @ )并执行以下操作:
$ADSplat = @{ "SearchBase" = 'OU=Houston,DC=contoso,DC=net' "Filter" = 'Name -eq "SomeOU"' "Properties" = "Description","Streetaddress","State","postalcode" } $ADOU = Get-ADOrganizationalUnit @ADSplat | Select-Object $ADSplat["Properties"]
如果你一直这样做,你的脚本将变得更容易更新/编辑,因为每个查询都是以相同的可读性可定义格式
如果我在shell中,中间线想要考虑我需要的属性,我会做类似的事情(使用Get-ADUser作为例子):
Get-ADUser username -Properties ($p = "manager","memberOf","cn") |select $p