Créer des utilisateurs avec PowerShell

Vous pouvez créer de nombreux utilisateurs ADLDS en l’automatisant avec PowerShell, pour cela on va créer deux fichiers.

Un fichier names.txt pour mettre les comptes utilisateurs, ensuite créer le script createuser.ps1 avec comme argument le fichier names.txt, le script crée alors les comptes ADLDS dans la partition OU=OU3,O=ms,C=com sur le serveur ADLDS qui a comme nom server2k8 qui utilise le port LDAP 50002.

Un fichier groups.txt sera également créer afin d’ajouter les comptes utilisateurs nouvellement créés dans des groupes qui sont définis dans le fichier groups.txt.

Supposons que le script sera créé dans le répertoire c:\temp, on se positionne d’abord dans ce répertoire avec set-location.

PS C:\ set-location c:\temp

Ensuite, autoriser à exécuter les scripts PowerShell.

PS C:\temp> set-executionpolicy unrestricted

Voici un exemple du contenu des fichiers names.txt et groups.txt

Fichier names.txt

account1

Julia

John

Roxanna

Kim

Huu-Duc

Fichier groups.txt

group1

group2

group3

group4

group5

 

. Créer le script PowerShell CreateUserFromListADLDS.ps1

Fichier CreateUserFromListADLDS.ps1

$InputUsers = Get-Content .\names.txt

$GroupsOU = [ADSI] 'LDAP://localhost:50002/OU=OU3,O=ms,C=com'

Foreach ($Line in $InputUsers)

{

$User = $GroupsOU.create('User','CN=' + $Line)

$User.SetInfo()

$User.Put('DisplayName', $Line)

$User.SetInfo()

}

On exécute le script PS avec la commande suivante :

.\ CreateUserFromListADLDS.ps1

ci-dessous, le résultat de la création des utilisateurs.

clip_image002

 

Création des groupes avec PowerShell.

Fichier CreateGroupADLDS.ps1

Ce script va lire le contenu du fichier groups.txt qui contient les noms des groupes à créer.

 

$InputGroups = Get-Content .\groups.txt

$GroupsOU = [ADSI] 'LDAP://localhost:50002/OU=OU3,O=ms,C=com'

Foreach ($Line in $InputGroups)

{

$User = $GroupsOU.Create('Group','CN=' + $Line)

$User.SetInfo()

$User.Put('displayname', $Line)

$User.SetInfo()

}

L’exécution du script ci-dessus est faite avec la commande suivante :

.\creategroupadlds.ps1

clip_image004

La figure ci-dessus montre le résultat de la creation des groupes par PS.

 

. Ajout des comptes dans le groupe GROUP1.

Fichier addmemberadlds.ps1

Ce script a comme fichier d’entrée names.txt, il va lire chaque de ce fichier, prendre le nom utilisateur et ajouter dans le groupe GROUP1.

$InputUser = Get-Content .\names.txt

$objContainer = [ADSI] "LDAP//localhost:50002/OU=OU3,O=ms,C=com"

Foreach ($Line in $InputUser)

{

$group = [ADSI]'LDAP://localhost:50002/CN=group1,OU=OU3,O=ms,C=com'

$group.Member.Add('CN=' + $Line + ',OU=OU3,O=ms,C=com')

$group.SetInfo()

}

L’exécution du PS script donne le résultat suivant :

PS C:\temp> .\addmemberadlds.ps1

0

1

2

3

4

5

clip_image006

En regardant le contenu de l’attribut member de GROUP1, on peut voir les utilisateurs qui ont été ajoutés dans ce groupe.

clip_image008

 

Créer les comptes de type UserProxy avec Power Shell.

Un exemple ci-dessous permet de créer plusieurs compte proxy par PS.

Le fichier d’entrée s’appelle column.txt, contenant 2 colonnes. La première colonne contient le nom du compte proxy, la deuxième colonne contient le SID du compte AD qu’on veut ajouter dans l’attribut ObjectSID du compte proxy qu’on veut créer.

 

Fichier column.txt

ADproxy1 S-1-5-21-1552230033-2990721084-1776586453-1107

ADproxy2 S-1-5-21-1552230033-2990721084-1776586453-1108

ADproxy3 S-1-5-21-1552230033-2990721084-1776586453-1109

Le script Power Shell ci-dessous va lire le fichier column.txt et crée les comptes proxy ADProxy1, ADProxy2 et ADProxy3.

Dans chaque ligne, le paramètre var[0] contient le compte utilisateur de la première colonne, var[1] contient le SID se trouvant dans la deuxième colonne.

 

Script CreateProxyUserAll.ps1

$InputUsers = Get-Content .\column.txt

$GroupsOU = [ADSI] 'LDAP://localhost:50002/OU=OU3,O=ms,C=com'

Foreach ($myvar in $InputUsers)

{

$var=$myvar.split()

$var[0]

$var[1]

$User = $GroupsOU.create('UserProxy','CN=' + $var[0])

$User.Put('DisplayName', $var[0])

$User.Put('ObjectSID', $var[1])

$User.SetInfo()

}

 

Exécution du script PS.

.\createProxyUserAll.ps1

ADproxy1

S-1-5-21-1552230033-2990721084-1776586453-1107

ADproxy2

S-1-5-21-1552230033-2990721084-1776586453-1108

ADproxy3

S-1-5-21-1552230033-2990721084-1776586453-1109

 

Ci-dessous, le résultat de l’exécution du script PS, 3 comptes de type userProxy sont créés.

clip_image010

Avec LDP, on peut vérifier le SID du compte ADProxy1 par exemple.

clip_image012