PowerShell:如何检索一个特定的属性_exclusively_

我怎样才能找回一个特定的财产?

我知道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