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 :

supprimer des membres d'un groupe AD [PowerShell]


Sujet :

Scripts/Batch

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut supprimer des membres d'un groupe AD
    Bonsoir,

    je sélectionne le groupe AD à partir d'une liste déroulante puis extraie la liste des IDs des membres à supprimer de ce groupe d'un fichier csv.
    Voici mon script :
    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
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
     
    $name ='*remove.csv'
     
    if (test-path "$scriptPath\..\output_files\$name") {clear-content $scriptPath\..\output_files\$name}
     
    #creation of the arrays for log (to be done before the foreach)
    $remove=@()
     
     # textbox to select the group to clean (the script of the textbox is common and in the file textbox.ps1)
     
    $text="Please enter the name of the group to clean:"
    . "$scriptPath\textbox.ps1"
    $groupcleaned=$objTextBox.Text #name of the group to be cleaned
    #one has to use for example sAMAccountName instead of name for any AD cmdlet
    $samgroupcleaned = ((Get-ADGroup -Filter {name -eq $groupcleaned} -Server "gad.schneider-electric.com").sAMAccountName)
     
    #dropdown list to select a csv file on the disk
    . "$scriptPath\sel_disk.ps1" #access to a common code. This script produces the variable $path
     
    $csv = Import-Csv -path $path #import of the csv file
     
    foreach($line in $csv)
    { 
        $columnvalue = $line.name   #name of SESA
        $data = @()  
        $domains = "eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"   #enlevé "gad.schneider-electric.com"
        foreach($domain in $domains)
    	{
            $rem=Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) " -Server $domain
     	$data += $rem ; 
    	}
     
    	if ($data) { 
                Write-Host "erase $columnvalue"                        
     
                if ($samgroupcleaned) {
                    Remove-ADGroupMember -Identity $samgroupcleaned -Member $data -Server "gad.schneider-electric.com"
    		$remove +=$line
    	    }		    
            }
    } 
     
    $date=get-date -uformat "%Y%m%d-%H%M%S" #current date in format suited for chronologic search
     
    $remove | Export-csv -path $scriptPath\..\output_files\$date-remove.csv
    J'obtiens ce message d'erreur :
    Remove-ADGroupMember : Le nom de compte spécifié n’est pas membre du groupe
    Je l'ai déjà obtenu : https://www.developpez.net/forums/d1...bres-d-groupe/ mais ce qui m'avait aidé ne suffit pas ici. Pouvez-vous m'aider ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Comme je ne parviens pas à supprimer des membres, j'ai une autre idée :
    1- lister les membres actuel et le stocker dans une variable ;
    2- supprimer de cette variable les membres à retirer ;
    3- effacer le contenu total du groupe (ça, je sais faire) ;
    4- ajouter dans le groupe les membres restants dans la variable.

    C'est un peu tortueux, mais le but serait atteint. Mais le problème, c'est l'étape 1 !
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #one has to use for example sAMAccountName instead of name for any AD cmdlet
    $samgrcleaned = ((Get-ADGroup -Filter {name -eq $groupcleaned} -Server "gad.schneider-electric.com").sAMAccountName)
    Write-Host "samgrcleaned = "$samgrcleaned
     
    $get= Get-ADGroupMember -Identity $samgroupcleaned;Write-Host $get
    Get-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null or empty.
    alors que
    samgrcleaned = GAD-SU-NextGenPDM_DEV
    Pourquoi ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Lister les membres d'un groupe AD, ça semble être une opération extrêmement basique ; quelqu'un peut-il me dire comment le faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Vu l'abondance des réponses , j'ai cherché sur un autre forum s'il y avait des idées pour lister les membres d'un groupe. J'ai trouvé un script :
    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
    $group=$samgrcleaned
    $server = "."
     
    if (! $group) { 
      throw "Vous devez préciser le nom du groupe à parcourir." 
    } 
     
    $ADSIGroup = [ADSI]"WinNT://$server/$group" 
     
    foreach ($member in $ADSIGroup.Members()) { 
     
      $ADSIName = $member.GetType().InvokeMember("AdsPath","GetProperty",$null,$member,$null) 
     
      # Dans certains cas, on peut avoir un SID à la place du nom d'utilisateur. 
      # Dans ces cas-là, on affiche le SID sans chercher à reconstruire la 
      # chaîne domaine\utilisateur: 
     
      if ($ADSIName -match "[^/]/[^/]") { 
        [String]::Join("\", $ADSIName.Split("/")[-2..-1]) 
      } 
      else { 
        $ADSIName.Split("/")[-1] 
      } 
    }
    mais
    The following exception occurred while retrieving member "Members": "Le nom de groupe est introuvable.
    "
    At C:\Users\sesa27384\Documents\aalaurent\boulot\powershell\zip\scripts\del2.ps1:35 char:21
    La ligne 35 est ici la 10...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Je me réponds à moi-même car j'ai constaté que je m'étais déjà posé la question y a quelque mois : https://www.developpez.net/forums/d1...s-d-groupe-ad/ et on m'avait donné une solution :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $list=(get-adgroupmember $samgrcleaned -Server "gad.schneider-electric.com").name
    Write-Host "list="$list
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Lecture des membres d'un groupe d'un fichier HDF5
    Par Juliendu92 dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 26/02/2015, 20h32
  2. Récupération des membres d'un groupe
    Par Zhamy dans le forum C#
    Réponses: 1
    Dernier message: 30/04/2010, 17h38
  3. [Hyperion Planning] Impossible de supprimer des membres
    Par willi94 dans le forum EPM (Hyperion)
    Réponses: 0
    Dernier message: 16/12/2008, 14h07
  4. [LDAP/JNDI] recherche des membres d'un groupe
    Par djidane39 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/03/2008, 17h22

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