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 :

Créer des utilisateurs AD avec CSV [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Créer des utilisateurs AD avec CSV
    Bonjour,

    Je cherche a créé des utilisateur AD avec un Fichier CSV avec powershell mon code de départ ressemble a sa
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $csv = import-csv -path "C:\users\administrateur\utilisateur.csv" -Delimiter ","
     
    foreach($line in $csv)
    {
    $nom = $line.Nom
    $prenom = $line.Prenom
     
    Add-Member -InputObject $line -MembreType NoteProperty -Name "Mot de passe" -Value ("Perso." + $Prenom)
    Add-Member -InputObject $line -MembreType NoteProperty -Name "Horaires" -Value ("L - V , 8AM - 8PM")
    }
    $csv

    Es que quelqu'un pourrais si possible m'aider a finir se code pour qu’après l'AD prenne ces donnée pour créé les utilisateurs
    (si il n'y a pas la restriction horaire se n'est pas grave)

    Nom : Capture7.PNG
Affichages : 2253
Taille : 5,5 Ko

    je suis débutant et votre aide me serai d'un grand secours

    Merci a vous

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Bon bas c'est bon j'ai trouver le code est celui ci si sa aider d'autre personne (sans les restriction horaire sa je l'ai pas encore trouver)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $csv = Import-csv -Path "C:\users\administrateur\utilisateur.csv" -Delimiter ","
    
    foreach($line in $csv)
    {
        $nom = $line.Nom
        $prenom = $line.Prenom
        $compte = $line.Compte
        $mdp = $line.Pass
    
        New-ADUser -Name ($nom +" "+ $prenom) -GivenName $nom -Surname $prenom -DisplayName ($nom + $prenom) -SamAccountName $compte -UserPrincipalName $compte -AccountPassword (ConvertTo-SecureString $mdp -AsPlainText -Force) -PassThru | enable-ADAcount 
    }
    $csv

  3. #3
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    salut Aaron_Zombie

    il manque une info pour créé un utilisateur : l'OU de destination
    c'est pas indispensable mais c'est mieux
    si tu met pas l'OU il crée l'utilisateur dans l'OU users
    pour crée un utilisateur tu utilise new-aduser
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New-ADUser -Name login -SamAccountName login -sn nom -GivenName prenom -Path "CN=Users,DC=domaine,DC=local" .......
    et pour les horaires il faut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # horaire de 8h-20h lun-ven
    [byte[]]$hours = 0,0,0,128,255,7,128,255,7,128,255,7,128,255,7,128,255,7,0,0,0
    
    # pour ajouter les horaires
    Set-ADUser -Identity test12 -Add @{logonHours=$hours} 
    
    # pour changer les horaires
    Set-ADUser -Identity test12 -replace @{logonHours=$hours}
    
    # pour supprimer les horaires
    Set-ADUser -Identity test12 -Clear logonHours
    le plus simple pour trouver les valeurs pour l'horaire tu les crée dans un utilisateur par interface normal
    puis tu regarde les valeurs avec la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Get-ADUser usertest -Properties logonHours).logonHours
    ça te fais deux lignes a rajouter dans la boucle que tu a faite

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Merci sa me fait avancer mais le truc c'est qu'il faudrais que les horaire soit liée genre si je change l'heure des session dans le csv que sa s'applique a l'utilisateur

    je sait pas si tu vas arriver a me comprendre
    sinon envoie in msg pv

    PS: pour ceux qui chercherons aussi cette solution plus tard je la mettrais sur le forum une fois trouver

  5. #5
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    je sait pas si tu vas arriver a me comprendre
    pas de prob je t'ai compris

    si tu veux changer les horaires en fonction du fichier csv il te faudra utiliser un format précis et t'y tenir
    et comprendre comment fonctionne le codage dans l'AD

    pour le format dans le fichier csv tu a mis en premier les jours en Français et après les heures au format américain
    ce serais plus simple pour toi de mettre l'heure au format européen de 0 à 23h

    pour le format dans l'AD :

    chaque jour de semaine est inscrits sur 3 octets
    soit 7 x 3 = 21 octets pour les 7 jours de la semaine en commençant par dimanche
    d'où la ligne [byte[]]$hours = 0,0,0,128,255,7,128,255,7,128,255,7,128,255,7,128,255,7,0,0,0 contenant 21 nombre de 0 à 255

    les heures sont inscrits sur 3 octets correspond a 8 heures par octet
    soit 3 x 8 = 24 heures pour les 24 heures de la journée
    les heures correspondent aux bits des octets de droite à gauche

    après c'est a voir mais il me semble qu'il y a un décalage en fonction de l'heure d'été

    tu a ici un script pour le codage en fonction d'une entrée
    tu peut t'en servir comme exemple ou l'utilisé tel quel

    tu a un autre exemple ici


    ci-dessous j'ai repris le script du premier lien, je l'ai simplifier et franciser
    tu peut l'utilisé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $hours = Set-OSCLogonHours -DayofWeek Mar,Mer,Jeu,Ven,Sam -From 8h -To 20h
    Set-ADUser -Identity test12 -Add @{logonHours=$hours}
    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
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    
    Function Set-OSCLogonHours
    {
    <#
        repris du script de
            https://gallery.technet.microsoft.com/scriptcenter/How-to-set-Users-Logon-1bb4b1a2
        merci a l'equipe OneScript Team
     	.SYNOPSIS
            Set-OSCLogonHours is an advanced function which can be used to set active directory user's logon time.
        .DESCRIPTION
            Set-OSCLogonHours is an advanced function which can be used to set active directory user's logon time.
        .PARAMETER  DayofWeek
    		Specifies le/les jours au format 3 lettres
        .PARAMETER  From
    		Specifies l'heure de debut au format 24h (de 0 à 23h) .
        .PARAMETER  To
    		Specifies l'heure de fin (heure inclu).
        .EXAMPLE
            C:\PS> Set-OSCLogonHours -DayofWeek Mar,Mer,Jeu,Ven,Sam -From 8h -To 20h
    
            du lundi au samedi de 8h à 20h
    
        .EXAMPLE
            C:\PS> Set-OSCLogonHours -DayofWeek Mer,Ven -From 14h -To 22h
    
            le mercredi et le vendredi de 14 à 22h
            
        .EXAMPLE
            Set-OSCLogonHours -DayofWeek Lun,Mar,Mer,Jeu,Ven -From 0h -To 23h
    
            du lendi au vendredi de toutes la journée
    #>
        Param
        (
            [ValidateSet("Dim","Lun","Mar","Mer","Jeu","Ven","Sam")]
            [Alias('day')][String[]]$DayofWeek,
    
            [ValidateSet("0h","1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h",
            "13h","14h","15h","16h","17h","18h","19h","20h","21h","22h","23h")]
            [Alias('f')][String]$From,
    
            [ValidateSet("0h","1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h",
            "13h","14h","15h","16h","17h","18h","19h","20h","21h","22h","23h")]
            [Alias('t')][String]$To
        )
    
        
        $Objs = @()
        Foreach($i in 0..23) {
            $Obj = New-Object -TypeName PSObject
            $Obj | Add-Member -MemberType NoteProperty -Name "position" -Value $([byte]$([math]::pow( 2, ($i%8))))
            $Obj | Add-Member -MemberType NoteProperty -Name "octet" -Value $([Math]::Floor($i/8))
    
            $Objs += $Obj
            }
    
        $HrsFrom = ($From.Split("h"))[0] - 1
        $HrsTo = ($To.Split("h"))[0] - 1
    
        If ($HrsFrom -le $HrsTo) {
           [byte[]]$HourBinary = @(0,0,0)
    
           $TimePeriod = $HrsFrom..$($HrsTo)
           Foreach ($Time in $TimePeriod) {
                $HourBinary[$Objs[$time].octet] += $Objs[$time].position
                }
    
            #Define Initial logon time
            $HoursBinary = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    
            #Iterating replace the specified value
            Foreach ($day in $DayofWeek) {
                Switch ($day) {
                    "Dim" {$HoursBinary[1],$HoursBinary[2],$HoursBinary[3] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Lun" {$HoursBinary[4],$HoursBinary[5],$HoursBinary[6] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Mar" {$HoursBinary[7],$HoursBinary[8],$HoursBinary[9] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Mer" {$HoursBinary[10],$HoursBinary[11],$HoursBinary[12] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Jeu" {$HoursBinary[13],$HoursBinary[14],$HoursBinary[15] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Ven" {$HoursBinary[16],$HoursBinary[17],$HoursBinary[18] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    "Sam" {$HoursBinary[19],$HoursBinary[20],$HoursBinary[0] = $HourBinary[0],$HourBinary[1],$HourBinary[2];Break}
                    }
                }
            }
        $HoursBinary
        }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Aaron_Zombie Voir le message
    Bon bas c'est bon j'ai trouver le code est celui ci si sa aider d'autre personne (sans les restriction horaire sa je l'ai pas encore trouver)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $csv = Import-csv -Path "C:\users\administrateur\utilisateur.csv" -Delimiter ","
    
    foreach($line in $csv)
    {
        $nom = $line.Nom
        $prenom = $line.Prenom
        $compte = $line.Compte
        $mdp = $line.Pass
    
        New-ADUser -Name ($nom +" "+ $prenom) -GivenName $nom -Surname $prenom -DisplayName ($nom + $prenom) -SamAccountName $compte -UserPrincipalName $compte -AccountPassword (ConvertTo-SecureString $mdp -AsPlainText -Force) -PassThru | enable-ADAcount 
    }
    $csv

    Hello ! Je le permets de remonter ton sujet car j'aimerais savoir ce que tu as mis dans ton fichier Csv pour pouvoir importer des mdp différents pour chaque user stp ?

    Quid de la Cmd $mdp-AsPlaintext -Force - Passthru ?

    Merci !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/04/2009, 15h38
  2. Créer des composants personnalisés avec JBuilder 4
    Par mtaveau dans le forum JBuilder
    Réponses: 4
    Dernier message: 21/06/2006, 07h08
  3. Créer des utilisateurs et des groupes(droits) sous SqlServer
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/11/2005, 07h57
  4. Créer des zone réactives avec un éditeur visuel
    Par sami_c dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 16/11/2005, 10h50
  5. Comment créer des onglets comme avec Excel (sheet1/sheet2)
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/09/2005, 16h36

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