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 :

syntaxe : utiliser une variable dans une cmdlet [PowerShell]


Sujet :

Scripts/Batch

  1. #21
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Get-ADGroup
    Permet de récupérer un ou plusieurs groupes active directory
    https://technet.microsoft.com/fr-fr/.../ee617196.aspx

    Filter
    Permet de spécifier des critères de recherche

    Server
    Permet de spécifier l'instance d'active directory


    En bref :
    La commande "Get-ADGroup" cherche dans l'AD du serveur "gad.schneider-electric.com" un groupe qui à pour Nom le contenu de $ADGroup. Et nous stockons le résultat dans $Group

  2. #22
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    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 486
    Billets dans le blog
    1
    Par défaut
    Merci pour cette explication, et comprends-tu comment on construit la variable $data dans le script que voici :

    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
     
    ...
    $csv = Import-Csv -path $path #import du fichier csv
     
    foreach($line in $csv)
    { 
            $columnvalue = $line.name
     
    	$data = @()
    	$domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
    	foreach($domain in $domains)
    	{
    		$data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
    	}
    	[bool]$data
    	if ($data) { 
                Write-Host "Insert $columnvalue"                        
     
                $Group = Get-ADGroup -filter {name -eq $ADGroup}  -Server "gad.schneider-electric.com" #génération d'une variable comprise pr la cmdlet
                Add-ADGroupMember -Identity $Group -Member $data -Server "gad.schneider-electric.com"
     
                $sesaOK +=$line   #si $data existe, on a inséré le SESA et ajoût de la ligne (donc le SESA) ds la variable $sesaOK
     
            }
            if (!$data) { Write-Host "Entry Not Found $columnvalue" 
                            $sesaNOK +=$line     #SESA pas inséré donc ajoût de la ligne (donc le SESA) ds la variable $sesaNOK
            }
    }

  3. #23
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Explication
    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
    $csv = Import-Csv -path $path #import du fichier csv
     
    # Pour chaque ligne de l'import csv
    foreach($line in $csv)
    { 
        # Déclaration de $data en type tableau
        $data = @()
     
        # cré la liste des domaines
        $domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
     
        # Pour chaque domaine
        foreach($domain in $domains)
        {
            # Recherche l'utilisateur pour ce domaine avec les critères, et l'ajoute au tableau $data
    	    $data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
        }
     
        # Aucun interet surement, peut être présent pour le débug
        [bool]$data
     
        # Si $data contient quelques chose (est égal à $true)
        if ($data)
        { 
            Write-Host "Insert $columnvalue"                        
     
            $Group = Get-ADGroup -filter {name -eq $ADGroup}  -Server "gad.schneider-electric.com" #génération d'une variable comprise pr la cmdlet
            # Ajout du ou des utilisateurs $data au groupe $Group du serveur "gad.schneider-electric.com"
            Add-ADGroupMember -Identity $Group -Member $data -Server "gad.schneider-electric.com"
     
            $sesaOK +=$line   #si $data existe, on a inséré le SESA et ajoût de la ligne (donc le SESA) ds la variable $sesaOK
     
        }
     
        # Si $data est vide (est différent de $true)
        if (!$data)
        {
            Write-Host "Entry Not Found $columnvalue" 
            $sesaNOK +=$line     #SESA pas inséré donc ajoût de la ligne (donc le SESA) ds la variable $sesaNOK
        }
    }


    Tu peux aussi ajouter la vérification sur l’existence du groupe AD
    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
    $csv = Import-Csv -path $path
    $domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
     
    foreach($line in $csv)
    { 
        $data = @()
        foreach($domain in $domains)
        {
    	    $data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
        }
     
        if ($data)
        { 
            Write-Host "Insert $columnvalue"
            $Group = Get-ADGroup -filter {name -eq $ADGroup}  -Server "gad.schneider-electric.com"
            if ($Group)
            {
                Add-ADGroupMember -Identity $Group -Member $data -Server "gad.schneider-electric.com"
                $sesaOK += $line
            }
            else
            {
                Write-Host "Group Not Found $columnvalue : $ADGroup"
                $sesaNOK += $line
            }
        }
        else
        {
            Write-Host "Entry Not Found $columnvalue" 
            $sesaNOK += $line
        }
    }

  4. #24
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    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 486
    Billets dans le blog
    1
    Par défaut
    Merci de nouveau pour l'explication.

    En fait, je m'aperçois que j'avais déjà compris la logique de ce script, mais quand tu dis "Recherche l'utilisateur pour ce domaine avec les critères", j'aurais pas été capable de pondre cette ligne (notamment les critères).

    La ligne 20, que tu juges inutile et juste pour le debug, aucune idée de son rôle. Si je la supprime, le résultat est identique alors que j'avais déjà essayé et ce n'était pas le cas...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/07/2011, 09h50
  2. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  5. Réponses: 1
    Dernier message: 15/02/2007, 00h24

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