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 :

Script traitement utilisateurs AD [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut Script traitement utilisateurs AD
    Bonjour,

    Je suis administrateur système et je me lance dans le PowerShell afin de traite une demande de désactivation et suppression de compte Active Directory.
    Apres pas mal de recherche j'ai trouvé mon bonheur à quelques détails prêt.

    Voici mon premier script qui me sert a la désactivation des utilisateurs :
    Code : 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
    Import-Module ActiveDirectory 
    
    $Date = Get-Date -format d
    
    Start-Sleep -s 5 
     
    $File=Import-CSV  -path ".\UsersADesactiver.csv"
    
    $LOG=".\log.txt"
     
    foreach ($item in $File) 
    { 
        $login=$item.login 
        Disable-ADAccount -Identity $login
       	ADD-content -path $LOG -value  "$login désactivé le $Date "    
    }
    pause
    Ce script fonctionne bien cependant, je n'arrive pas a faire de contrôle sur les comptes.
    J'aimerai contrôler le fait que l'utilisateur existe bien et qu'il n'est pas désactivé.
    J'ai bien chercher avec l'aide d'un très bon amis (google) mais je n'arrive pas à mettre en place un tel controle.

    Pour ce qui est du deuxième script c'est un peu le même problème, voici le script :
    Code : 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
    Import-Module ActiveDirectory 
    
    $Date = Get-Date -format d
    
    Start-Sleep -s 5 
     
    $File=Import-CSV  -path ".\UsersASupprimer.csv"
    
    $LOG=".\log.txt"
     
    foreach ($item in $File) 
    { 
        $login=$item.login 
        Remove-ADUser -Identity $login -Confirm:$false
       	ADD-content -path $LOG -value  "$login supprimé le $Date "    
    }
    pause
    Pareil je voudrais contrôler l'état de l'utilisateur, sa présence dans l'AD, ainsi que l'état de la protection contre la suppression accidentel.

    Je cherche à faire ces contrôles afin de bien logger mes actions, et pouvoir justement savoir l'état réel de mes objet après traitement.

    Je suis sur qu'ici je vais trouver mes réponses.

    Merci d'avance à toutes la communauté developpez.com

  2. #2
    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 Sebtoune

    voici tous les tests que tu cherche :

    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
    Import-Module ActiveDirectory 
     
    $Date = Get-Date -format d
     
    $File = Import-CSV  -path ".\UsersADesactiver.csv"
     
    $LOG = ".\log.txt"
     
    foreach ($item in $File) { 
        $login = $item.login 
        if (Get-ADUser -Filter {SamAccountName -eq $login}) { # test la presence de l'utilisateur
            if ((Get-ADUser -Filter {SamAccountName -eq $login}).enabled -eq $true) { # test si l'utilisateur est activé
                # test de l'état de la protection contre la suppression accidentel
                if ((Get-ADUser -Filter {SamAccountName -eq $login} -Properties ProtectedFromAccidentalDeletion).ProtectedFromAccidentalDeletion -eq $true) {
                    Disable-ADAccount -Identity $login
       	            ADD-content -path $LOG -value  "$login désactivé le $Date "
                    }
                }
            }
        }

    n'hésite pas si ta besoin de précision !

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut
    Merci pour la réponse super rapide.
    Je vais de ce pas modifié mes scripts

    Juste une petite question subsidiaire avant toutes choses :
    Est ce que je peux gérer les différents Else?

    Par exemple:
    Code : 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
    Import-Module ActiveDirectory 
    
    $Date = Get-Date -format d
    
    Start-Sleep -s 5 
     
    $File=Import-CSV  -path ".\UsersADesactiver.csv"
    
    $LOG=".\log.txt"
     
    foreach ($item in $File) 
    { 
        if (Get-ADUser -Filter {SamAccountName -eq $login}) { # test la presence de l'utilisateur
    
            if ((Get-ADUser -Filter {SamAccountName -eq $login}).enabled -eq $true) # test si l'utilisateur est activé
            { 
        
                $login=$item.login 
                Disable-ADAccount -Identity $login
       	        ADD-content -path $LOG -value  "$login : compte désactivé le $Date "    
            }
            Else #l'utilisateur est désactivé 
            {
                Add-Content -path $LOG -value  "$login : compte deja désactivé "
            }
        Else #L'utilisateur n'existe pas 
        {
             Add-Content -path $LOG -value  "$login : l'utilisateur n'existe pas "
        }
    }
    pause
    J'ai un doute sur le cheminement des "ELSE"

    Merci encore.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut
    Je vais le tester et je reviendrais dire le résultat...
    Je vais quand même pas attendre qu'on me mâche le travail... Un peu de recherche voyons...

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut
    Est on obligé d'utiliser -filter dans la requete ou on peux utiliser le -identity de mon script du départ?

    Merci en tout cas, j'avance doucement mais surement et je cherche aussi à bien comprendre pour ne pas faire de copier coller "bêtement"

  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
    Est on obligé d'utiliser -filter dans la requete ou on peux utiliser le -identity de mon script du départ?
    l'utilisation de filter permet de ne pas avoir de message d'erreur si l'utilisateur n'existe pas
    il est donc utile pour le premier if
    après tu fais comme tu veux ! mais ça change rien au résultat de la recherche !

    J'ai un doute sur le cheminement des "ELSE"
    tu a tres bien fais tes IF/ELSE pas de probleme sur ce point !

    je cherche aussi à bien comprendre pour ne pas faire de copier coller "bêtement"
    c'est une bonne chose
    pose toutes les questions donc t'a besoin, j'essaierais dis répondre au mieux

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

Discussions similaires

  1. Scripts Création Utilisateur
    Par Hacksign dans le forum Windows Serveur
    Réponses: 15
    Dernier message: 15/02/2008, 16h35
  2. [Recherche] script session utilisateurs ..
    Par cuisto44000 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/02/2008, 15h28
  3. [exchange 2007] créer script nvl utilisateur
    Par valoche51_2 dans le forum Exchange Server
    Réponses: 0
    Dernier message: 05/12/2007, 11h02
  4. [PERL]: Help script traitement fichier txt tabulaire
    Par Piccolupo13 dans le forum Langage
    Réponses: 2
    Dernier message: 21/08/2007, 20h37
  5. Réponses: 3
    Dernier message: 25/07/2007, 23h07

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