Como posso recuperar uma propriedade específica exclusivamente ?
Estou ciente do select-object
cmdlet que parece ser desleixado a esse respeito:
PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties * | Select-Object Description,Streetaddress,State,postalcode | format-list
Uma versão otimizada seria:
PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties Description,Streetaddress,State,postalcode
Por que o -property
switch não está retornando apenas as propriedades inseridas?
Isso ocorre porque o
-properties
switch não é uma ferramenta de formatação, ele pretende ser uma forma de receber mais informações do que os valores padrão já incluídos.Do artigo Get-ADOrganizationalUnit .
Se você deseja formatar sua saída, é melhor ficar com a
select-object
declaração.Você precisaria usar ambos para especificar quais propriedades recuperar do controlador de domínio e quais selecionar e, por fim, exibir.
-Properties *
é um potencial destruidor de desempenho, pois o DSA precisará retornar todos os atributos que possuem um valor, incluindo certificados e outros valores binários que você pode não precisarEm um script utilizando os cmdlets do AD, eu usaria o operador splatting
@
( ) e faria o seguinte:Se você fizer isso consistentemente, seus scripts se tornarão superfáceis de atualizar/editar, já que cada consulta é definida no mesmo formato hastable legível
Se eu estiver no shell e no meio do oneliner pensar nas propriedades de que preciso, faria algo como (usando
Get-ADUser
como exemplo):Considere também usar LDAP ou ADSI http://blogs.technet.com/b/heyscriptingguy/archive/2010/12/01/use-powershell-to-query-active-directory-from-the-console.aspx