Colocando isso aqui para referência futura. Estou no meio de uma migração de email. Preciso conhecer cada conta de usuário e seus respectivos membros do grupo, e também preciso conhecer cada grupo e seus respectivos membros.
Estou usando o bloco de código abaixo para gerar um CSV para a associação ao grupo de cada usuário.
Get-ADUser -Filter * |`
ForEach-Object { `
$FileName = $_.SamAccountName + ".csv" ; `
$FileName ; `
Get-ADPrincipalGroupMembership $_ | `
Select-Object -Property SamAccountName, name, GroupScope, GroupCategory | `
Sort-Object -Property SamAccountName | `
Export-Csv -Path $FileName -Encoding ASCII ; `
}
O processo de exportação para os grupos e seus respectivos membros foi um pouco complicado, mas o abaixo funciona. Os nomes dos arquivos de saída incluem o tipo de grupo. Portanto, os grupos de distribuição de e-mail necessários são / devem ser os grupos Universal e Global Distribution. Eu devo ser capaz de excluir ou mover os arquivos TXT resultantes de que não preciso.
Get-ADGroup -Filter * | `
Select-Object -Property Name, DistinguishedName, GroupScope, GroupCategory | `
Sort-Object -Property GroupScope, GroupCategory, Name | `
Export-Csv -Path ADGroupsNew.csv -Encoding ASCII
$MyCSV = Import-Csv -Path .\ADGroupsNew.csv -Encoding ASCII
$MyCSV | `
ForEach-Object { `
$FN = $_.GroupScope + ", " + $_.GroupCategory + ", " + $_.Name + ".txt" ; `
$FN ; `
Get-ADGroupMember -Identity $_.DistinguishedName | `
Out-File -FilePath $FN -Encoding ASCII ; $FN=""; `
}