Sophie vous confie un poste fraîchement installé : « Avant même de penser à l’Active Directory — on y viendra en section 6 — chaque machine Windows a ses propres comptes et groupes locaux. C’est souvent la première chose à automatiser sur un nouveau poste ou un petit serveur isolé. »
Précision importante, dans la continuité de la leçon 1.3 : ces cmdlets (
*-LocalUser,*-LocalGroup) sont spécifiques à Windows et n’existent pas sous Linux/macOS, qui ont leurs propres mécanismes de gestion des comptes (useradd,usermod…), en dehors du périmètre de cette formation.
Lister les comptes et groupes locaux
Get-LocalUser
Get-LocalGroupCibler un compte précis :
Get-LocalUser -Name "j.dupont"Créer un utilisateur local
$motDePasse = Read-Host "Mot de passe du nouveau compte" -AsSecureString
New-LocalUser -Name "j.dupont" -Password $motDePasse -FullName "Julie Dupont" -Description "Stagiaire IT - Nordika"On retrouve ici
Read-Host -AsSecureString, vu en leçon 3.4 : jamais de mot de passe en clair dans un script, même pour un simple test.
Modifier ou désactiver un compte
Set-LocalUser -Name "j.dupont" -Description "Stagiaire IT - Nordika (contrat terminé)"
Disable-LocalUser -Name "j.dupont"Disable-LocalUser est presque toujours préférable à une suppression : le compte est bloqué, mais reste consultable en cas de besoin (audit, restauration) — une bonne pratique qu’on retrouvera en section 9 sur la sécurité.
Supprimer un compte
Remove-LocalUser -Name "j.dupont"Comme pour Remove-Item en 4.2, cette action est définitive : le réflexe -WhatIf reste valable ici aussi.
Gérer les groupes locaux
Créer un groupe :
New-LocalGroup -Name "Nordika-Stagiaires" -Description "Comptes stagiaires à accès restreint"Ajouter un utilisateur à un groupe (par exemple, le groupe Administrateurs intégré à Windows) :
Add-LocalGroupMember -Group "Administrateurs" -Member "j.dupont"Lister les membres d’un groupe :
Get-LocalGroupMember -Group "Nordika-Stagiaires"Retirer un membre :
Remove-LocalGroupMember -Group "Nordika-Stagiaires" -Member "j.dupont"Un exemple concret Nordika
$nouveauCompte = "j.dupont"
$motDePasse = Read-Host "Mot de passe pour $nouveauCompte" -AsSecureString
if (-not (Get-LocalUser -Name $nouveauCompte -ErrorAction SilentlyContinue)) {
New-LocalUser -Name $nouveauCompte -Password $motDePasse -FullName "Julie Dupont"
Add-LocalGroupMember -Group "Nordika-Stagiaires" -Member $nouveauCompte
Write-Output "Compte $nouveauCompte créé et ajouté au groupe Stagiaires"
} else {
Write-Warning "Le compte $nouveauCompte existe déjà"
}(-ErrorAction SilentlyContinue sera détaillé en section 5 — il évite ici qu’une erreur s’affiche si le compte n’existe pas encore, ce qui est le comportement normal attendu par Get-LocalUser dans ce test.)
Ce que vous venez de faire à l’échelle d’un seul poste avec
New-LocalUserest exactement la même logique qu’on automatisera à l’échelle de toute l’entreprise en section 6, avec le moduleActiveDirectoryet un import CSV pour créer des centaines de comptes d’un coup.
Dans la prochaine leçon, on termine cette exploration système avec un lecteur déjà entrevu en 4.1 : le Registre Windows.