Bonjour
je cherchais un script powershell pour extraire la liste des membres sur une sélection de Groupes (de sécurité)
après quelques recherches et test j'ai écrit le script je vous le joins pour ceux que ça peut aider.
y'a surement possibilité d'optimiser le script en longueur mais ça fonctionne.
Lors du lancement du script vous devez saisir le critère de recherche sur le nom des groupes. compta* par exemple recherche tous les groupes dont le nom commence par compta. On retrouve pour chaque groupe la liste de ses membres. si le membre
est lui même un groupe, le groupe est détaillé avec les membres du sous-groupe. dans le paramètre SearchBase, vous devez indiquez dans quelle OU de votre organisation vous voulez rechercher.
cordialement
Eric
script :
Clear-Host
#déclaration StreamWriter pour écrire dans un fichier
$FichierExport = 'C:\texte\ListeMembresGroupe.txt'
$Stream = New-Object System.IO.StreamWriter($FichierExport)
$Stream.WriteLine("Liste des membres des Groupes " + "`t" + (get-date).ToString('dd/MM/yyyy HH:mm:ss') )
$MyFiltre = Read-Host "Saisir le nom de groupe à rechercher ? : "
write-Host "Traitement en cours"
$Stream.writeLine("")
$Stream.WriteLine("Nom Groupe recherché :`t$MyFiltre")
$Stream.writeLine("")
$MyGroupes = Get-ADGroup -Server horus -SearchBase "ou=Groupes,ou=MyOU,dc=domaine,dc=fr" -Filter {name -like $MyFiltre} | Sort-Object -Property Name
foreach ($MyGroup in $MyGroupes)
{
# on traite chaque groupe
$Chaine = "Groupe :`t"
$Chaine += $MyGroup.Name + "`t" + $Mygroup.ObjectClass + "`t" + $Mygroup.GroupScope + "`t" + $MyGroup.groupCategory
$Stream.WriteLine( $Chaine )
$MyAllMembre = Get-ADGroupMember -Identity $MyGroup.distinguishedName | Sort-Object -Property Name
foreach ($MyMembre in $MyAllMembre)
{
# Traitement des Membres du groupe
$Chaine = "`t" + $MyMembre.name + "`t" + $MyMembre.objectClass
$Stream.WriteLine( $Chaine )
if ($MyMembre.objectClass -eq "group")
{
# Traitement du détail si un Groupe est membre
$MyMemberSsGroupes = Get-ADGroupMember -identity $MyMembre.distinguishedName | Sort-Object -Property Name
foreach ($MyMemberSsGroup in $MyMemberSsGroupes)
{
# Traitement des membres du sous-groupe
$Chaine = "`t`t" + $MyMemberSsGroup.name + "`t" + $MyMemberSsGroup.objectClass
$Stream.writeLine( $Chaine )
}
}
}
$Stream.writeLine( "" )
}
$Stream.Close() # Fermeture StreamWriter
Write-Host "Création du fichier terminé " $FichierExport -ForegroundColor Black -BackgroundColor Yellow