Poniendo esto aquí para referencia futura. Estoy en medio de una migración de correo electrónico. Necesito conocer cada cuenta de usuario y su respectiva membresía de grupo, y también necesito conocer cada grupo y sus respectivos miembros.
Estoy usando el bloque de código a continuación para generar un CSV para la membresía de grupo de cada usuario.
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 ; `
}
El proceso de exportación para los grupos y sus respectivos miembros fue un poco complicado, pero a continuación funciona. Los nombres de los archivos de salida incluyen el tipo de grupo. Por lo tanto, los grupos de distribución de correo electrónico que necesito son / deberían ser los grupos de Distribución Universal y Global. Debería poder simplemente eliminar o mover los archivos TXT resultantes que no necesito.
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=""; `
}