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 переключатель не только возврат вводимого propteries?

3
задан 28 January 2015 в 12:15
3 ответа

Это связано с тем, что переключатель -properties не является инструментом форматирования, он предназначен как способ получить больше информации, чем значения по умолчанию, уже включенные.

От статья Get-ADOrganizationalUnit .

Задает свойства выходного объекта, который нужно получить с сервера. Используйте этот параметр для получения свойств, которые не включены в набор по умолчанию.

Если вы хотите отформатировать свой вывод, лучше придерживаться инструкции select-object .

7
ответ дан 3 December 2019 в 04:44

Вам нужно будет использовать оба, чтобы указать, какие свойства извлекать из контроллера домена, а какие выбрать и в конечном итоге отобразить. -Свойства * могут снизить производительность, поскольку DSA должен будет возвращать каждый атрибут , имеющий значение, включая сертификаты и другие двоичные значения, которые могут вам не понадобиться

В сценарий, использующий командлеты AD, я бы использовал оператор 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"]

Если вы будете делать это последовательно, ваши сценарии станут очень легко обновлять / edit, поскольку каждый запрос определен в одном и том же удобочитаемом формате hastable


Если я нахожусь в командной оболочке, а средний пользователь задумываюсь о необходимых мне свойствах, я бы сделал что-то вроде в качестве примера):

Get-ADUser username -Properties ($p = "manager","memberOf","cn") |select $p
6
ответ дан 3 December 2019 в 04:44

Также рассмотрите возможность использования LDAP или ADSI http://blogs.technet.com/b/heyscriptingguy/archive/2010/12/01/use-powershell-to- query-active-directory-from-the-console.aspx

0
ответ дан 3 December 2019 в 04:44

Теги

Похожие вопросы