IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Copier les groupes d'un utilisateur AD, mais sans listes de diffusion [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut Copier les groupes d'un utilisateur AD, mais sans listes de diffusion
    Bonjour,
    Je me permets de vous solliciter pour modifier un script existant.

    actuellement, je scripte une copie de permissions d'un compte utilisateur source vers un nouvel utilisateur à sa création, en excluant au passage certains groupes via leur appellation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ADUser -Identity $copiegroup -Properties memberof | Select-Object -ExpandProperty memberof | where {$_-notlike "*GP1*" or $_-notlike "*GRP_*" or $_-notlike "*GROUP_*" or $_-notlike "*TGROUP_*"}  | Add-ADGroupMember -Members $sam
    $copiegroup et $sam sont mes variables des utilisateurs (source et cible).

    Je souhaiterais pouvoir exclure aussi de la copie des groupes de sécurité toutes mes listes de diffusion exchange. Le problème c'est qu'elles ont des noms divergents comme mes groupes de sécu donc pas possible de rajouter un notlike sur un truc du genre listediff_ ou autres.
    Par contre toutes mes listes de diffusion se trouvent dans une OU commune DOMAIN\Liste_diffusion

    Est-il possible de les exclure par ce biais ? Si oui, comment adapter ma requête dans la ligne de script ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut yakalelo57

    je pense que ce que tu cherche c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $listgroups = (Get-ADGroup -Filter * -SearchBase "OU=Liste_diffusion,DC=domaine,DC=lan").DistinguishedName 
    
    Get-ADUser -Identity $copiegroup -Properties memberof | Select-Object -ExpandProperty memberof | where {($_ -notlike "*GP1*" -or $_ -notlike "*GRP_*" -or $_ -notlike "*GROUP_*" -or $_ -notlike "*TGROUP_*") -and $listgroups -notcontains $_ }  | Add-ADGroupMember -Members $sam
    la premiere ligne récupère la liste des groupes dans l'OU liste de diffusion au format DistinguishedName : "CN=nom du groupe de diffusion,OU=nom de l'OU ou ce trouve les groupes,DC=nom du domaine,DC=extension du domaine"

    sur ta ligne j'ai rajouter en fin du where " -and $listgroups -notcontains $_" qui compare chaque groupe de memberof au contenu de $listgroups

    j'ai corriger les or dans le where par des -or

    par contre habituellement sur des negations ont fait plutôt des -and
    mais c'est toi qui vois !!

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut test
    bonjour,
    on est proche je pense.

    En fait si je teste ce code sous cette forme là je n'ai plus la copie des listes de distribution (qui se trouvent dans l'OU spécifiée), mais par contre je retrouve à nouveau mes groupes de sécurité qui ne sont pas exclus :

    le code complet que j'ai testé chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Import-module activedirectory
    
    cd "C:\Scripts\Creation"
    
    $listgroups = (Get-ADGroup -Filter * -SearchBase "OU=ListeDiffusion,DC=DOMAIN,DC=local").DistinguishedName
    Get-ADUser -Identity userderef -Properties memberof | Select-Object -ExpandProperty memberof | where {($_ -notlike "*SFD_*" -or $_ -notlike "*SP_*" -or $_ -notlike "*VPN_*" -or $_ -notlike "*ART_*" -or $_ -notlike "*GG_T*") -and $listgroups -notcontains $_ } | Add-ADGroupMember -Members test77
    Write-Host "Les groupes de sécurité du compte ont bien été ajoutés au compte hormis les groupes contenant SFD_, SP_ , VPN_, ART_ et GG_T ainsi que les listes de diffusion"
    Les groupes comprenant SFD_ etc sont tous copiés quand même.

    Il est vrai que j'avais une erreur dans le code posté au début et je l'avais corrigé aussi mais différemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #Get-ADUser -Identity userderef -Properties memberof | Select-Object -ExpandProperty memberof | where {$_-notlike "*SFD_*"} | where {$_-notlike "*SP_*"} | where {$_-notlike "*VPN_*"} | where {$_-notlike "*ART_*"} | where {$_-notlike "*GG_T*"}  | Add-ADGroupMember -Members test77
    code qui fonctionne mais seulement pour les groupes..
    Peut-être simplement des parenthèses à mettre au bon endroit mais là je suis un peu trop novice dans le requetage via powershell

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut yakalelo57

    mais par contre je retrouve à nouveau mes groupes de sécurité qui ne sont pas exclus :
    puis
    code qui fonctionne mais seulement pour les groupes
    ton message confirme ce que je t'avais dis :
    par contre habituellement sur des negations ont fait plutôt des -and à la place des -or
    une petite explication
    si tu dis "il est different de A" OU "il est different de B"
    tu vois que si tu test avec B, au premier diff B "est different de A" la condition est vrais tous va bien c'est normal
    mais avec le ou (or) si une seule condition est vrais l'ensemble est vrais, du coup la deuxième condition "B est different de B" ne change rien et le where laisse passer le groupe
    il te faut donc mettre des and à la place des or :
    "B est different de A" ET "B est different de B" pour que ainsi la premiere condition ET la deuxième condition soit verifier pour bloquer le groupe (B)
    "B est different de A" c'est vrais, "B est different de B" c'est faux : la condition est fausse, je bloque

    ton script avec les where qui s'enchaine fait la même chose que le ET(and), c'est une autre façon de faire mais moins jolie aux yeux d'un dev !!!

    ton nouveau script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $listgroups = (Get-ADGroup -Filter * -SearchBase "OU=ListeDiffusion,DC=DOMAIN,DC=local").DistinguishedName
    Get-ADUser -Identity userderef -Properties memberof | Select-Object -ExpandProperty memberof | 
        where {$_ -notlike "*SFD_*" -and $_ -notlike "*SP_*" -and $_ -notlike "*VPN_*" -and $_ -notlike "*ART_*" -and $_ -notlike "*GG_T*" -and $listgroups -notcontains $_ } | 
        Add-ADGroupMember -Members test77
    Write-Host "Les groupes de sécurité du compte ont bien été ajoutés au compte hormis les groupes contenant SFD_, SP_ , VPN_, ART_ et GG_T ainsi que les listes de diffusion"
    je suis un peu trop novice dans le requetage via powershell
    ce n'est pas lier a PowerShell, c'est le même principe pour tous les langage C, Basic, SQL, ...
    c'est le la logique binaire !!!

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 74
    Points : 43
    Points
    43
    Par défaut réponse
    au poil, un grand merci

    En fait j'étais plus familier avec une syntaxe mysql qu'une syntaxe powershell, du coup j'ai pas trop fait gaffe avec les commutateurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Copier les groupes d'un utilisateur AD, mais avec des exclusions
    Par yakalelo57 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/09/2017, 19h43
  2. [Batch] Script pour copier les groupes AD d'un utilisateur vers un nouveau
    Par All_yson dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 18/06/2014, 14h57
  3. Lister les groupes d'un utilisateur
    Par filoudesbois dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/04/2008, 08h15
  4. Réponses: 2
    Dernier message: 26/02/2008, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo