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 :

Add-ADGroupMember : confusion entre les attributs Identity et Member [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Add-ADGroupMember : confusion entre les attributs Identity et Member
    Bonjour,

    dans mon code, le message d'erreur montre qu'il prend pour valeur de l'attribut Identity la valeur attribuée à Member. Peut-on m'expliquer ?

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Add-ADGroupMember -Identity $groupdestOK -Member $member_already_displayed -Server "gad.schneider-electric.com"

    message d'erreur :
    Add-ADGroupMember : Impossible de trouver un objet avec l’identité «SESA23161» sous: «
    DC=gad,DC=schneider-electric,DC=com».
    Or SESA23161 est la valeur de la variable $member_already_displayed qui est attribuée à l'attribut Member et non Identity.
    Donc où est le problème ?

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je reviens après une semaine de congés. Apparemment, mon problème n'a pas inspiré grand monde...

    Je vais essayer de donner plus de détails.
    L'objectif est de sélectionner un groupe à copier puis de sélectionner un groupe destinataire où l'on souhaite coller le contenu du groupe copié. (en gros un copier-coller d'un groupe sur un autre).

    Voici le script complet pour faire ça (je ne mets pas le script list_der.ps1, car il fonctionne donc ça n'apporterait rien) :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #vider le contenu du fichier, s'il existe
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #chemin du script en cours
    if (test-path $scriptPath\..\output_files\member.csv) {clear-content $scriptPath\..\output_files\member.csv}
     
    #liste déroulante, pour sélectionner le groupe à copier
    . "$scriptPath\liste_der.ps1"
    $groupsource=$liste1.Text
    Write-Host "groupsource="$groupsource
     
    #liste déroulante, pour sélectionner le groupe à alimenter
    . "$scriptPath\liste_der.ps1"
    $groupdest=$liste1.Text
    Write-Host "groupdest="$groupdest
     
    $member_already_displayed=@()
    $member=(Get-ADGroupMember -Identity $groupsource  -Server "gad.schneider-electric.com" | select -Unique).name 
     
    if (!($member_already_displayed -Contains $member)) { 
                $member_already_displayed+=$member 
                Write-Host "member_already_displayed="$member_already_displayed
    }
     
    if ($member_already_displayed) {                
        $groupdestOK = Get-ADGroup -filter {name -eq $groupdest}  -Server "gad.schneider-electric.com" #génération d'une variable comprise pr la cmdlet Add-ADGroupMember
        if ($groupdestOK) {
            Add-ADGroupMember -Identity $groupdestOK -Member $member_already_displayed -Server "gad.schneider-electric.com"
        }
    }       
     
     
    $member_already_displayed  | set-content -path $scriptPath\..\output_files\member.csv
    Pour écrire ce script, je me suis inspiré d'un autre script qui alimente lui aussi un groupe AD et celui-ci fonctionne donc je ne comprends pas le message d'erreur du post #1. Quelqu'un comprend ?

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    C'est un peu désolant de ne pas recevoir d'aide car je suis coincé. Vu qu'il semble intervertir les paraètres Identity et Member, j'ai fait l'échange dans ma ligne de code : Add-ADGroupMember -Identity $member_already_displayed -Member $groupdestOK -Server "gad.schneider-electric.com" à la place de Add-ADGroupMember -Identity $groupdestOK -Member $member_already_displayed -Server "gad.schneider-electric.com" mais cela donne un autre message d'erreur :
    Add-ADGroupMember : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADGroup' required by
    parameter 'Identity'. Specified method is not supported.
    Vu le message d'erreur, je pense qu'il ne fallait pas intervertir...

    Un truc quand même : la cmdlet Get-ADGroupMember est censée retourner tous les membres du groupe AD désigné par le paramètre Identity. Or mon code nécessite d'affecter un seul membre à la fois dans la variable $member. Comment corriger mon code pour que ce soit le cas ?

  4. #4
    Membre chevronné
    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
    Par défaut
    salut laurentSc

    il arrive que personne ne réponde; souvent parce qu'on ne sais pas, parfois parce qu'il faut lire la doc , et d'autre fois parce que c'est evident pour nous ! pas pour toi

    dans la doc on voir que on peut donner plusieurs utilisateurs ou groupes ou ordinateurs comme membres, mais il faut qu'ils soit au format objet !!!
    ex : les utilisateurs -> Microsoft.ActiveDirectory.Management.ADUser
    soit donc extrait d'un get-ADUser

    dans ton cas tu doit plutôt faire une boucle puis Get-ADGroupMembe renvoie un objet de type : Microsoft.ActiveDirectory.Management.ADPrincipal !!

    ex de boucle :
    $member_already_displayed | foreach {Add-ADGroupMember -Identity $groupdestOK -Member $_}

    bon courage pour la suite

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    je te remercie pour ta réponse ; même si je suis depuis quelques années sur ce forum, Powershell, ça fait que un mois ou 2...
    La doc, je le regarde pas ; quand, je cherche de l'aide, je fais un help...Ca suffit pas ?

    Tu dis que les membres doivent être issus d'un get-ADUser mais dans l'exemple de boucle que tu donnes, y en a pas ???

    Et si j'utilise ta boucle, la variable $member_already_displayed est vide !

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $groupdestOK = Get-ADGroup -filter {name -eq $groupdest}  -Server "gad.schneider-electric.com" #génération d'une variable comprise pr la cmdlet Add-ADGroupMember
    $member_already_displayed=@()
    $member_already_displayed | foreach {Add-ADGroupMember -Identity $groupdestOK -Member $_}
    Write-Host "member_already_displayed="$member_already_displayed

  6. #6
    Membre chevronné
    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
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Bonjour,
    La doc, je le regarde pas ; quand, je cherche de l'aide, je fais un help...Ca suffit pas ?
    si bien sur, perso j'utilise l'ISE, avec le volet commande qui te donne l'accès à l'aide et au paramétrage

    Tu dis que les membres doivent être issus d'un get-ADUser mais dans l'exemple de boucle que tu donnes, y en a pas ???
    je me suis mal exprimé, si tu rajoute un seul membre tu peut mettre un string sinon tu doit utilisé un objet de type "ADUser"
    dans la boucle que je t'ai donner le pipeline envoie un par un les membres à Add-ADGroupMember

    [/QUOTE]Et si j'utilise ta boucle, la variable $member_already_displayed est vide ![/QUOTE]c'était un exemple basé sur ton premier message.
    dans le dernier l'exemple de code que tu donne tu ne met rien dans $member_already_displayed

    pour ton cas ce serait plutôt ceci :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $member=(Get-ADGroupMember -Identity $groupsource  -Server "gad.schneider-electric.com" | select -Unique).name
    $member | foreach {Add-ADGroupMember -Identity $groupdestOK -Member $_}
    Add-ADGroupMember rajoute les membres $membre du groupe $groupsource au groupe $groupdestOK

    si je regarde bien, je voie que tu cherche a rajoute les membres d'un groupe dans un autre en vérifient qu'ils n'y soit pas déjà (pour ne pas généré d'erreur je suppose) !! c'est bien ça ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2010, 18h35
  2. [xsd] Contrainte entre les attributs
    Par XtoX dans le forum Valider
    Réponses: 3
    Dernier message: 03/04/2009, 11h00
  3. [DF] dépendances fonctionnelles entre les attributs et la clé
    Par sadook dans le forum Schéma
    Réponses: 9
    Dernier message: 06/09/2007, 00h51
  4. Confusions entre les one/many-to-many/one
    Par TigrouMeow dans le forum Hibernate
    Réponses: 1
    Dernier message: 01/01/2007, 21h44
  5. Sérialisation: Quelles différences entre les attributs ?
    Par eldoctor.Sylvain dans le forum Framework .NET
    Réponses: 2
    Dernier message: 18/09/2006, 15h12

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