none
Listes des membres des Groupes AD dans fichier texte RRS feed

  • Question

  • 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

    vendredi 10 mars 2017 13:09

Toutes les réponses