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 :

lister tous les groupes appartenant à un domaine [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 lister tous les groupes appartenant à un domaine
    Bonjour,

    je souhaite donner la possibilité à l'utilisateur de sélectionner un groupe parmi tous les groupes d'un domaine. Je voudrais donc lister tous les groupes appartenant à ce domaine.
    Voici le code que j'ai tenté mais qui ne marche pas :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $lgroup=(Get-ADGroup -filter *)
     foreach ($lg in $lgroup) { Write-host "$lg.Name" }
    Ca me donne ce type d'affichage au lieu de la liste de noms que j'attends.
    CN=DE059-SG-APPL-EngBase,OU=Groups,OU=Hannover-Energy,OU=Sites,OU=DE,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.Name
    CN=EUR-GMEA-DATA-SG-wsat00101_Abt_HRSS-C,OU=Cross Domain,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.Name
    Peut-on me corriger ?

  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, ce que je cherche (décrit dans le post #1) semble très basique, mais je n'y arrive pas (malgré mon ancienneté sur le forum, je débute sur Powershell). J'ai cherché une solution ici et dans le bouquin de ENI qui donne les bases mais même pas trouvé d'informations sur les groupes, domaines, forêts (pour en trouver une description, j'ai du faire appel à mon ami mais rien sur leur manipulation. Où pourrais-je trouver cette information ?

  3. #3
    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
    Bonjour LaurentSc

    j''espère que tu a passer de bonne vacances !!

    pour ta demande puisque tu veux les groupes d'un domaine indique lequel !! j'ai mis gad mais tu va plutôt mettre une variable pour le choix du domaine apa.gad.schneider-electric.com, gmea.gad.schneider-electric.com, etc ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lgroup = (Get-ADGroup -filter *  -Server "gad.schneider-electric.com").name
    après en sortir d'affichage console, write-host n'est pas fait pour les tableaux
    on utilise format-table ou format-list ou la variable seul suivant les cas

    utilise plutôt cette écriture :
    tu peut aussi renvoyer le résultat dans un variable et l'utiliser comme un tableau de chaines de caractères

    ou aussi
    la aussi tu peut mettre le résultat dans un variable et mais ce sera un objet contenant la propriété "name" renvoiyer par get-adgroup

  4. #4
    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 6ratgus,

    merci pour ta réponse.

    Les vacances, bien, mais chaudes (30 la nuit (dedans) et sans clim, ça fait des mauvaises nuits...). Cette semaine, encore en vacances, mais chez moi et 11 au petit matin (dehors donc si on ouvre la fenêtre...), c'est mieux

    Choisir le domaine, même si pas indiqué dans mon post, j'y ai pensé mais comme je pense les balayer tous, j'ai laissé gad (comme les autres sont (je crois) des sous-domaines de gad, en mettant juste gad, on les parcourt tous, non ?)

    Afficher les groupes n'est qu'une étape sachant que le but ultime est de les afficher dans une liste déroulante pour que l'utilisateur puisse en choisir un. Je possède déjà un script pour une liste déroulante et comme celle-ci est utilisée plusieurs fois, j'ai créé une fonction à laquelle je passe la liste des choix à proposer et qui retourne le choix effectué, du moins c'est l'objectif mais ce n'est pas encore au point. Voici mon code :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     $listgroup=""
     $lgroup=Get-ADGroup -filter * -Server "gad.schneider-electric.com"
     foreach ($lg in $lgroup) {$listgroup+='"'+$lg.name+'",' }
     
     
    # dropdown list to select the group to be copied
    $groupsource=dropdown_list $listgroup
    sachant que la liste des choix doit être de cette forme : "GAD-SU-NextGenPDM_NonPROD","GAD-SU-NextGenPDM_PrePROD","GAD-SU-MediaReviewUATGroup",etc.

    Voici le code de la fonction :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Function dropdown_list
    {
    Param{$listgroup}
    ...
    }

    Mais je viens de voir ce message d'erreur :
    Param : The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program.
    puis
    Get-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null or empty.
    C'est quoi mon problème ?

  5. #5
    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
    Cette semaine, encore en vacances, mais chez moi et 11 au petit matin (dehors donc si on ouvre la fenêtre...), c'est mieux
    oui c'est mieux, alors bonne vacances à travailler

    Choisir le domaine, même si pas indiqué dans mon post, j'y ai pensé mais comme je pense les balayer tous
    normalement pour les avoir tous dans une forest comme tu a, on interroge le global catalogue. mais la dernière fois que j'ai regarder avec toi, ça n'avais pas marcher
    ceci dis l'écriture pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ADGroup -filter *  -Server "gad.schneider-electric.com:3268"
    de mon cote je n'ai pas de forest pour faire des tests

    Param : The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program
    pour ce message d'erreur je te le laisse, tu va trouver seul
    une aide quand même, dans l'éditeur ISE si tu fais un clic droit dans le menu contextuel qui apparais tu as "démarrer les extraits", ça te permet d'avoir un modèle d'écriture pour les boucles/conditions/fonctions/cmdlets/etc...

    Get-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null or empty.
    dans tes scripts donner il n'y a pas le paramètre identity alors je vois pas

  6. #6
    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
    J'ai attendu mercredi pour répondre Le hasard et je suis couche-tard et de plus la connexion à distance ne marche qu'à moitié et j'ai mis longtemps avant d'essayer...mais Powershell fonctionne ! (Alors que je n'accède aux mails du boulot que depuis 15 minutes).
    L'écriture pour la forest avec 3268 ne marche pas...car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $listgroup=""
     $lgroup=Get-ADGroup -filter * -Server "gad.schneider-electric.com:3268"
     foreach($lg in $lgroup) {$listgroup+='"'+$lg.name+'",' }
     $listgroup
    donne
    ComboBox = "","","","","","","","","",""," etc
    Merci pour l'aide pour Param ; même si la langue chez moi est anglaise, j'ai deviné que c'était "start Snippets" et du coup, j'ai trouvé la bonne syntaxe pour les fonctions. En fait, pas été sur Google et le bloc Param, je l'avais trouvé dans un bouquin : https://m.editions-eni.fr/livre/wind...9782746094437#

    Voici mon script complet avec notamment le Get-ADGroupMember -Identity (ligne 44)
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     Function dropdown_list($listgroup)
    {
    [reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
    $form1 = New-Object Windows.Forms.Form
    $form1.text = "Controls"             
    $form1.Size = New-Object System.Drawing.Size(300,200)
    #dropdown list (ComboBox).
    $liste1 = New-Object System.Windows.Forms.Combobox
    $liste1.Location = New-Object Drawing.Point 20,20
    $liste1.Size = New-Object System.Drawing.Size(250,30)
    $liste1.DropDownStyle = "DropDownList"
    $liste1.Items.AddRange(($listgroup))
    $liste1.SelectedIndex = 0
    #add the control to the window
    $form1.controls.add($liste1)
    #displays all
    $form1.ShowDialog()
    #displays the selection.
    write-host "ComboBox = " $liste1.Text
    }
     
     $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
     
     $listgroup=""
     $lgroup=Get-ADGroup -filter * -Server "gad.schneider-electric.com:3268"
     foreach($lg in $lgroup) {$listgroup+='"'+$lg.name+'",' }
     $listgroup
     #$listgroup="GAD-SU-NextGenPDM_NonPROD","GAD-SU-NextGenPDM_PrePROD","GAD-SU-MediaReviewUATGroup","GAD-SU-MediaReviewUserGroup","GAD-SU-NextGenPDM_TRN","GAD-SU-NextGenPDM_DEV"
     
    # dropdown list to select the group to be copied
    $groupsource=dropdown_list $listgroup
    #. "$scriptPath\liste_der.ps1"
    #$groupsource=$liste1.Text
     
    # dropdown list to select the group to feed
    . "$scriptPath\liste_der.ps1"
    $groupdest=$liste1.Text
     
    #one has to use for example sAMAccountName instead of name for any AD cmdlet
    $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName)
    $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName)
     
    Get-ADGroupMember -Identity $samgrsource  -Server "gad.schneider-electric.com" | foreach {
        Write-Host $_.SamAccountName"`t  " -NoNewline -ForegroundColor Green
        $u = $_ #the switch instruction generates aldo a $_ variable, so memorization
        #to do a search in the right domain, first locate in DistinguishedName what is this domain
        switch ($_.DistinguishedName) {
            {($_).contains("DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {SamAccountName -eq $u.SamAccountName -and Enabled -eq $True} -Server "gad.schneider-electric.com" 
                }
            {($_).contains("DC=apa,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {SamAccountName -eq $u.SamAccountName -and Enabled -eq $True} -Server "apa.gad.schneider-electric.com"
                }
            {($_).contains("DC=gmea,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {SamAccountName -eq $u.SamAccountName -and Enabled -eq $True} -Server "gmea.gad.schneider-electric.com"
                }
           {($_).contains("DC=eur,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {SamAccountName -eq $u.SamAccountName -and Enabled -eq $True} -Server "eur.gad.schneider-electric.com"
                }
           {($_).contains("DC=nam,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {SamAccountName -eq $u.SamAccountName -and Enabled -eq $True} -Server "nam.gad.schneider-electric.com"
     
                }
            }
        if ($user) {
        #if the domain has been found, some displays+add the user in the new group
            Write-Host $user.Enabled"`t  "  -NoNewline -ForegroundColor Red
            Write-Host $user.SamAccountName"`t  " -NoNewline -ForegroundColor White
            Write-Host $user.Name -NoNewline -ForegroundColor Yellow
            Add-ADGroupMember -Identity $samgrdest -members $u -Server "gad.schneider-electric.com"
            }
        Write-Host ""
        }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2013, 10h05
  2. lister tous les membres de tous les groupes AD
    Par fbb53 dans le forum VBScript
    Réponses: 1
    Dernier message: 03/10/2011, 11h24
  3. Réponses: 0
    Dernier message: 24/08/2011, 14h18
  4. Réponses: 0
    Dernier message: 09/05/2011, 15h30
  5. [ActiveDirectory] Lister tous les groupes
    Par RaelRiaK dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/02/2007, 17h31

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