Ça y est, nous rentrons dans le vif du sujet, les scripts ! Dans ce chapitre, nous allons créer un utilisateur avec PowerShell, puis nous utiliserons des scripts pour automatiser cette tâche. C'est parti !
Créez un utilisateur et activez un utilisateur avec PowerShell
Normalement, vous devriez avoir ceci dans Utilisateurs et ordinateurs Active Directory :

La commande New-ADUser permet de créer un utilisateur avec PowerShell ; en voici un exemple qui permet de créer un utilisateur avec ces propriétés :
login : lombard ;
mail : lombard@lavachette.com ;
mot de passe : Pwd2019 ;
pas d’expiration du mot de passe ;
ne peut pas changer son mot de passe.
New-ADUser -Name "LOMBARD Joël" -SamAccountName lombard -UserPrincipalName "lombard@lavachette.com" -AccountPassword (ConvertTo-SecureString -AsPlainText Pwd2019 -Force) -PasswordNeverExpires $true -CannotChangePassword $true
Remarque : je ne mettrai plus le chemin PS au début de chaque commande, j’espère que vous avez fini par comprendre que l’on ne faisait que des commandes PowerShell 😂 !
Super, j’ai créé mon premier utilisateur avec Powershell, et il a été créé dans l’unité d’organisation Users :

Ah mince, il est désactivé ! 😩 Vous pouvez le voir avec la petite flèche vers le bas, juste à côté de son icône de profil.
Pas de problème, nous allons l'activer en tapant la commande PowerShell suivante :
PS C:\Users\Administrateur> Enable-ADAccount lombard
Cool, mon utilisateur est activé. 😀 Je le vois car il n’y a plus la petite flèche vers le bas à côté de son profil !

Bon, c’est cool mais moi, je voudrais des utilisateurs dans mon domaine et je suis très fainéant... Du coup, j’ai récupéré la liste des utilisateurs, les voici :
Utilisateurs | Logins | Mots de passe |
LOMBARD Joël | lombard | Pwd2019 |
BLANC Luc | luc | Pwd2019 |
TAP Vincent | vincent | Pwd2019 |
DIN Christelle | christelle | Pwd2019 |
GERS Arnaud | arnaud | Pwd2019 |
TRESSA Karine | karine | Pwd2019 |
FREI Michel | michel | Pwd2019 |
Bon, elle est sympa la commande pour créer les utilisateurs, mais comme j’ai peur de faire des erreurs, je vais automatiser tout ceci et il va falloir que je crée mon premier script. Allons-y 😁 !
Créez un script PowerShell de création d'utilisateur
Bon, on se lance. On va réutiliser tout ce que l’on a vu avant, rien de plus. Donc on va faire un petit script qui va effectuer les étapes suivantes :
1. Demander le nom et le prénom de l’utilisateur :
$nom = Read-Host "Merci de Rentrer le Nom et le Prénom de l’Utilisateur à Créer"
2. Demander le login de l’utilisateur :
$login = Read-Host "Merci de Rentrer le Login de l’Utilisateur à Créer"
3. Demander le mot de passe de l’utilisateur :
$mdp = Read-Host "Merci de Rentrer le Mot de Passe de l’Utilisateur à Créer"
4. Créer l’Utilisateur :
New-ADUser -Name $nom -SamAccountName $login -UserPrincipalName $login@lavachette.com -AccountPassword (ConvertTo-SecureString -AsPlainText $mdp -Force) -PasswordNeverExpires $true -CannotChangePassword $true -Enabled $true
Bon, ben génial mais comment je le crée, ce script 🤔 ?
Pour cela, il suffit de le faire avec Notepad et de l’enregistrer en script_user.ps1
. Ouvrez le Notepad avec la commande Notepad.exe
.
# Contenu de script_user.ps1
$nom = Read-Host "Merci de Rentrer le Nom et le Prénom de l’Utilisateur à Créer"
$login = Read-Host "Merci de Rentrer le Login de l’Utilisateur à Créer"
$mdp = Read-Host "Merci de Rentrer le Mot de Passe de l’Utilisateur à Créer"
New-ADUser -Name $nom -SamAccountName $login -UserPrincipalName $login@lavachette.com -AccountPassword (ConvertTo-SecureString -AsPlainText $mdp -Force) -PasswordNeverExpires $true -CannotChangePassword $true -Enabled $true
On peut voir notre script qui a bien été créé et on peut voir également sa taille en octets :
-a---- 06/07/2019 20:53 451 script_user.ps1
Ensuite, il suffit de lancer le script avec la commande powershell .\script_user.ps1
.
Le script va alors vous demander d'entrer chacune des informations pour chaque utilisateur que vous voulez créer. Entrez-les en suivant la liste ci-dessus, vous devriez avoir quelque chose qui ressemble à ça :
PS C:\Users\Administrateur> powershell .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : BLANC Luc Merci de Rentrer le Login de l'Utilisateur à Créer : luc Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer : Pwd2019 PS C:\Users\Administrateur> .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : TAP Vincent Merci de Rentrer le Login de l'Utilisateur à Créer : vincent Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer : Pwd2019 PS C:\Users\Administrateur> .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : DIN Christelle Merci de Rentrer le Login de l'Utilisateur à Créer : christelle Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer: Pwd2019 PS C:\Users\Administrateur> .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : GERS Arnaud Merci de Rentrer le Login de l'Utilisateur à Créer : arnaud Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer: Pwd2019 PS C:\Users\Administrateur> .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : TRESSA Karine Merci de Rentrer le Login de l'Utilisateur à Créer : karine Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer: Pwd2019 PS C:\Users\Administrateur> .\script_user.ps1 Merci de Rentrer le Nom et le Prénom de l'Utilisateur à Créer : FREI Michel Merci de Rentrer le Login de l'Utilisateur à Créer : michel Merci de Rentrer le Mot de Passe de l'Utilisateur à Créer: Pwd2019
Votre Active Directory devrait maintenant ressembler à ça :

On peut utiliser une commande PowerShell pour Afficher les utilisateurs créés en tapant la commande Get-ADUser -Filter *
ou Get-ADUser -Filter * | select samAccountName
.
PS C:\Users\Administrateur> Get-ADUser -Filter * | select samAccountName samAccountName -------------- Administrateur Invité krbtgt lombard vincent christelle arnaud karine michel luc
On peut utiliser d’autres arguments avec -Filter
comme ceci :
PS C:\Users\Administrateur> Get-ADUser -Filter * | select Name, samAccountName, UserPrincipalName Name samAccountName UserPrincipalName ---- -------------- ----------------- Administrateur Administrateur Invité Invité krbtgt krbtgt fabrice fabrice fabrice@lavachette.com LOMBARD Joël lombard lombard@lavachette.com TAP Vincent vincent vincent@lavachette.com DIN Christelle christelle christelle@lavachette.com GERS Arnaud arnaud arnaud@lavachette.com TRESSA Karine karine karine@lavachette.com FREI Michel michel michel@lavachette.com BLANC Luc luc luc@lavachette.com
Et on peut même générer un fichier texte avec nos différents filtres comme ceci :
Get-ADUser -Filter * | Select-Object name, samAccountName, UserPrincipalName | Export-Csv UserAdUTF8.csv -Encoding UTF8 ↵
On peut maintenant ouvrir notre fichier créé avec la commande Notepad.exe UserAdUTF8.csv
.

Créez un script de création et gestion de groupes
Allez, nous allons faire évoluer notre société en ajoutant des groupes et en insérant nos utilisateurs dans les groupes créés. Voici ce que nous voulons comme structure des groupes :
Groupes | Utilisateurs | Logins |
PDG | LOMBARD Joël | Lombard |
COM | BLANC Luc TAP Vincent | Luc Vincent |
COMPT | DIN Christelle GERS Arnaud | Christelle Arnaud |
SEC | TRESSA Karine FREI Michel | Karine Michel |
Notre script effectuera donc les étapes suivantes :
1. Demander le nom du groupe à créer et créer le groupe :
On utilisera la commande New-ADGroup pour créer un groupe dans Active Directory.
$groupe = Read-Host "Merci de Rentrer le Nom du Groupe à Créer" New-ADGroup $groupe -GroupScope Global
2. Demander le nombre d’utilisateurs à insérer dans le groupe :
[int] $nombre = Read-Host "Merci de Rentrer le Nombre d’Utilisateurs à Insérer dans le Groupe"
3. Demander le nom des utilisateurs à insérer dans le groupe :
$nom = Read-Host "Merci de Rentrer le Nom de l’Utilisateur à Insérer dans le Groupe $groupe"
4. Insérer les utilisateurs dans le groupe :
Nous utiliserons la commande Add-ADGroupMember pour insérer les utilisateurs dans un groupe.
Add-ADGroupMember -identity $groupe -Members $nom
Bon, c’est très bien tout cela, mais il manque quelque chose : une structure de contrôle pour réaliser une boucle en fonction du nombre d’utilisateurs à insérer dans le groupe.
Allez, je vous aide, voici notre script script_groupe.ps1
et on utilisera Windows PoserShell ISE pour réaliser ce script à partir de maintenant :
# Contenu de script_groupe.ps1
$groupe = Read-Host "Merci de Rentrer le Nom du Groupe à Créer"
New-ADGroup $groupe -GroupScope Global
[int] $nombre = Read-Host "Merci de Rentrer le Nombre d’Utilisateurs à Insérer dans le Groupe"
for ($i=1; $i -le $nombre; $i++)
{
$nom = Read-Host "Merci de Rentrer le Nom de l’Utilisateur à Insérer dans le Groupe $groupe"
Add-ADGroupMember -identity $groupe -Members $nom
Write-Host "L’Utilisateur $nom a Bien Eté Inséré dans le Groupe $groupe."
}

Vous pouvez exécuter ce script avec cette console en cliquant sur la flèche verte :

Et voici l’exécution de l’ajout de 2 groupes avec 2 utilisateurs :
PS C:\Users\Administrateur> C:\Users\Administrateur\script_groupe.ps1 Merci de Rentrer le Nom du Groupe à Créer : COM Merci de Rentrer le Nombre d'Utilisateurs à Insérer dans le Groupe : 2 Merci de Rentrer le Nom de l'Utilisateur à Insérer dans le Groupe PDG : luc L'Utilisateur luc a Bien Eté Inséré dans le Groupe COM. Merci de Rentrer le Nom de l'Utilisateur à Insérer dans le Groupe PDG : vincent L'Utilisateur vincent a Bien Eté Inséré dans le Groupe COM. PS C:\Users\Administrateur>
L’utilisation de WindowsPowerShell ISE est bien intuitive car c’est comme un IDE, il permet de trouver les erreurs dans le code, et l’autocomplétion permet de taper plus vite et d’éviter les erreurs ; nous utiliserons Windows PowerShell ISE pour la suite de ce cours. Cependant, il est important de connaître l’édition de script PowerShell avec Notepad.exe, car certains serveurs sont installés sans interface graphique, mais Notepad.exe est toujours présent.
Nous pouvons afficher nos groupes créés avec utilisateurs et ordinateurs Active Directory :

On peut utiliser cette commande pour afficher la liste de tous les groupes :
PS C:\Users\Administrateur> Get-ADGroup -Filter *
On peut utiliser cette commande pour afficher la liste des utilisateurs dans le groupe COMPT :
PS C:\Users\Administrateur> Get-ADGroupMember COMPT distinguishedName : CN=DIN Christelle,CN=Users,DC=DAVID,DC=COM name : DIN Christelle objectClass : user objectGUID : b4ce7dce-8757-4021-aa5a-0de9d7efcb80 SamAccountName : christelle SID : S-1-5-21-1794228856-519301800-261500123-1121 distinguishedName : CN=GERS Arnaud,CN=Users,DC=DAVID,DC=COM name : GERS Arnaud objectClass : user objectGUID : 8354055a-7dc4-47c7-9dfa-4bb29c90bae0 SamAccountName : arnaud SID : S-1-5-21-1794228856-519301800-261500123-1122
On peut générer un fichier également comme ceci pour afficher les informations du groupe SEC :
PS C:\Users\Administrateur> Get-ADGroupMember SEC | Export-Csv SEC.csv -Encoding UTF8
On peut générer un fichier également comme ceci pour afficher seulement les membres du groupe COM :
PS C:\Users\Administrateur> Get-ADGroupMember COM | Select-Object name | Export-Csv COM.csv -Encoding UTF8

On peut également générer un fichier TRESSA.txt qui liste les groupes dont fait partie l’utilisateur TRESSA Karine :
$user = Get-AdUser -Filter * -SearchBase "CN=TRESSA Karine, CN=Users, DC=DAVID, DC=COM" -Properties MemberOf
foreach($u in $user) {
$nom = $u.name
$membre = $u.memberof
Add-Content -Path "TRESSA.txt" -Value $nom
Add-Content -Path "TRESSA.txt" -Value $membre
}

Et voici le résultat :
Bon, ce n’est pas très parlant, mais si TRESSA Karine faisait partie de plusieurs groupes, les groupes dont elle fait partie seraient tous affichés dans ce fichier texte.
Allons, attaquons-nous maintenant aux scripts de sauvegarde, c’est le prochain chapitre.
Résumé
Dans ce chapitre, nous avons vu :
la commande
New-ADUser
qui permet d'ajouter un utilisateur dans l’Active Directory ;la commande
New-ADGroup
qui permet d'ajouter un groupe dans l’Active Directory ;la commande
Add-ADGroupMember
qui permet d’insérer des utilisateurs dans un groupe Active Directory ;les commandes
Get-ADUser
,Get-ADGroup
etGet-ADGroupMember
qui permettent de lister les informations des utilisateurs et des groupes de l’Active Directory ;et nous avons surtout réalisé nos premiers scripts sous PowerShell !
Dans le prochain chapitre, nous allons voir comment automatiser des tâches de sauvegarde avec des scripts PowerShell.