Question Script AD pour vérifier si l'utilisateur est en doublon dans groupes imbriqués

Plus d'informations
il y a 1 an 11 mois - il y a 1 an 11 mois #32206 par NewScript
Bonjour,

Je souhaite réaliser un script pour chaque groupe de l'active directory, me permettant de lister si un utilisateur de l'active Directory fait parti d'un groupe parent, mais aussi de ses sous groupes, et si c'est le cas que le résultat sorte en rouge.

(C'est à dire qu'on met l'utilisateur dans un groupe, mais qu'on le mette aussi dans un sous groupes de ce groupe, ce qui n'a aucun interêt)

Et je souhaiterais appliquer cela à tout les groupes parents de mon active directory.

Je pense que pour scripter cela, la logique serait :

- Faire variable $group (groupe parent) et $subgroup (sous groupe),
- Faire un foreach $group dans une OU des groupes parents,
           - listing des sous groupes dans chaque groupe
           - avec un list $user in $subgroup et $group,
           - et une petite ligne pour vérifier les doublons au niveau des utilisateurs

(permettant ainsi de voir, si l'utilisateur sort 2fois lorsque l'on liste les utilisateurs faisant parti du groupe et des sous groupes)


Malheureusement étant novice je n'ai pas trop d'idée comment structurer et écrire ça
je vous remercie d'avance pour l'aide
Dernière édition: il y a 1 an 11 mois par NewScript. Raison: manque de clareté

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 11 mois - il y a 1 an 11 mois #32208 par Philippe
salut NewScript

ta demande s'oriente sur le post précédent
comme tu l'explique ta logique est bonne mais il existe des instruction qui vont t'aider par exemple pour les sous groupes (voir post precedent) 
l'instruction
Get-ADGroupMember -Identity "nom_du_groupe" -Recursive
a une capacité de récursivité qui va donc regarder dans les sous groupes d'un groupe parent
il va donc te liste tout les utilisateurs d'un groupe parent ainsi que des sous groupes
tu a plus qu'a utilisé après un
group-object
pour trouver les doublons

tu a donc 90% du travail de fait

pour l'affichage en rouge un
Write-Host $variable_du_resultat -BackgroundColor red
devrais faire le job

le te laisse faire des recherche sur ces trois instrustions et faire un script que tu pourra nous montrer ici :)
Dernière édition: il y a 1 an 11 mois par Philippe.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 8 mois - il y a 1 an 8 mois #32430 par NewScript
Hello Philippe,

Merci et désolé pour cette réponse tardive !
La commande ne fonctionne pas comme je le souhaite, car elle affiche seulement les utilisateurs en une fois :


Or voici la hiérarchie test de l'active directory:

 
 
 
 
 
 




Comme tu peux le voir j'ai mis un utilisateur à la racine d'une OU et dans l'ou je mets un groupe avec l'utilisateur de L'OU racine, et ainsi de suite.
Je souhaite que la commande liste et l'utilisateur dans l'ou racine, et aussi l'utilisateur dans le groupe imbriqué car là en executant la commande, l'utilisateur n'apparait qu'une fois.

Merci beaucoup !
Bonne journée
 
Pièces jointes :
Dernière édition: il y a 1 an 8 mois par NewScript. Raison: image copié

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 8 mois #32455 par NewScript
N'Hésitez pas si c'est pas clair, j'ai vraiment besoin de ce script

je vous remercie

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 8 mois - il y a 1 an 8 mois #32456 par Philippe
salut

je vois que je me suis trompé dans ma première réponse !

tu dois faire une fonction récursive. Mais attention s'est gourment en ressources, quand il y a beaucoup de groupes et peut tourner à l'infinie si le nom d'un groupe se trouve dans un sous groupe.

j'ai rajouté dans la réponse de la fonction le nom du ou ce trouve l'utilisateur

$group = "grcommun"

function Get-MembreGroupeAD ($groupeAD)
    {
    $gr = Get-AdGroup $groupeAD
    Get-AdGroupMember $groupeAD | foreach {
        if ($_.objectClass -eq "group") {
            Get-MembreGroupeAD $_
            }
        else {
            $_ | select distinguishedName, name, objectClass, objectGUID, SamAccountName, SID, @{n="groupe";e={$gr}}
            }
        }
    }

Get-MembreGroupeAD $group


 
Dernière édition: il y a 1 an 8 mois par Philippe.
Les utilisateur(s) suivant ont remercié: NewScript

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #32633 par NewScript
Salut !

J'ai totalement zappé de répondre... je te remercie pour ton aide c'était ce que je cherchais :)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.183 secondes
Propulsé par Kunena