Como posso gerar uma lista dos grupos de segurança aos quais um conjunto de usuários pertence?

6

Fui solicitado a gerar uma lista dos grupos de segurança (especificamente, não os grupos de distribuição) aos quais uma lista de aproximadamente 50 usuários pertence.

Eu tenho uma lista de usuários, users.txt que contém cada nome de usuário em uma nova linha. Desejo gerar um membership.txt que contenha o nome de usuário e uma lista dos grupos de segurança dos quais o usuário é membro, separados por vírgulas.

O script Powershell que escrevi até agora é o seguinte:

$users = Get-Content C:\users.txt

ForEach ($User in $users) {
  $getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
  $User + ',' + $getmembership | Out-File -Append c:\membership.txt
}

Isso quase funciona, mas por dois problemas:

  1. Ele está gerando uma lista de todos os grupos, não apenas de grupos de segurança. Como posso dizer que apenas inclua grupos de segurança e não grupos de distribuição?
  2. Os grupos estão sendo anexados no formato OU=Security Groups,OU=City,DC=domain,DC=com CN=Senior Leaders , mas a única informação que realmente quero é Senior Leaders . Como posso cortar toda a informação extra?
por NaOH 25.09.2014 / 21:18

1 resposta

7

Estenda sua linha Get-ADUser :

$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof | Get-ADGroup -Properties name | Where { $_.GroupCategory -eq 'Security' } | Select -ExpandProperty Name

Isso alimentará o DN do grupo com Get-ADGroup para recuperar propriedades adicionais, depois filtrará na categoria do grupo e selecionará o nome do grupo (em vez do nome distinto).

    
por 25.09.2014 / 21:38