02/07/2024

Comment gérer les utilisateurs et groupes locaux ?

I. Présentation

Dans ce chapitre, nous allons apprendre à gérer les utilisateurs et groupes locaux de Windows avec PowerShell ! Un module PowerShell natif nommé "Microsoft.PowerShell.LocalAccounts" sert à créer, modifier, et supprimer les utilisateurs et groupes locaux de la base de comptes locale de Windows (base SAM).

Le module "Microsoft.PowerShell.LocalAccounts" que l'on peut appeler "LocalAccounts" est disponible sur Windows et Windows Server depuis la sortie de Windows 10 et de Windows Server 2016, donc vous devriez l'avoir sur la grande majorité de vos machines. Ce module est en quelque sorte le successeur (ou concurrent...) des célèbres commandes "net user" et "net localgroup". D'ailleurs, ces commandes fonctionnent toujours.

II. Les commandes du module LocalAccounts

Pour lister les commandes du module LocalAccounts et avoir une idée de son potentiel, nous utiliserons cette commande :

Get-Command -Module Microsoft.PowerShell.LocalAccounts

Ce module contient une bonne dizaine de commandes, dont voici la liste :

  • Add-LocalGroupMember : ajouter un utilisateur à un groupe de sécurité local
  • Disable-LocalUser : désactiver un compte utilisateur local
  • Enable-LocalUser : activer un compte utilisateur local
  • Get-LocalGroup : obtenir la liste des groupes de sécurité locaux
  • Get-LocalGroupMember : obtenir la liste des membres d'un groupe de sécurité
  • Get-LocalUser : obtenir la liste des utilisateurs locaux
  • New-LocalGroup : créer un nouveau groupe de sécurité
  • New-LocalUser : créer un nouvel utilisateur local
  • Remove-LocalGroup : supprimer un groupe de sécurité local
  • Remove-LocalGroupMember : retirer un membre d'un groupe local
  • Remove-LocalUser : supprimer un utilisateur local
  • Rename-LocalGroup : renommer un groupe local
  • Rename-LocalUser : renommer un utilisateur local
  • Set-LocalGroup : modifier un groupe local
  • Set-LocalUser : modifier un utilisateur local, utile pour changer le mot de passe

Il y a vraiment tout l'arsenal nécessaire pour manipuler les utilisateurs et groupes locaux !

III. Créer un utilisateur local avec PowerShell

Pour commencer, nous allons créer un utilisateur local avec PowerShell. Le nom de cet utilisateur sera stocké dans la variable "$AccountName", son mot de passe dans la variable "$AccountPassword" et la description dans "$AccountDescription".

Le mot de passe doit répondre aux exigences de la stratégie de mots de passe de la machine locale, ou de l'Active Directory s'il s'agit d'une machine intégrée au domaine. Par ailleurs, si le mot de passe n'est pas précisé, il devra être saisi en mode interactif dans la console PowerShell.

$AccountName = "test-fb"
$AccountPassword = ConvertTo-SecureString "P@ssword123!" -AsPlainText -Force
$AccountDescription = "Compte de test"

# Créer le compte local
New-LocalUser $AccountName -Password $AccountPassword -FullName $AccountName -Description $AccountDescription

La commande New-LocalUser aura pour effet de créer le compte "test-fb" sur l'ordinateur local. Par défaut, ce compte est activé alors si vous souhaitez qu'il soit désactivé, il faut ajouter le paramètre "-Disabled". D'autres paramètres sont disponibles pour cette commande comme le mentionne la documentation Microsoft.

Note : lorsqu'un compte est créé avec New-LocalUser, il n'appartient à aucun groupe de sécurité. De ce fait, sur Windows Server il ne sera pas possible d'ouvrir une session interactive (alors que ce sera possible sur Windows 10 ou Windows 11). Donc, en complément, il faudra l'ajouter à minima au groupe Utilisateurs avec la commande Add-LocalGroupMember étudiée dans la suite de cet article.

Ce nouveau compte apparaît bien dans la liste des comptes locaux :

Get-LocalUser

La preuve en image :

PowerShell - New-LocalUser

D'ailleurs, la commande "Get-LocalUser" peut renvoyer beaucoup d'informations au sujet des comptes : dernière connexion, date d'expiration du mot de passe, date du dernier changement de mot de passe, SID du compte, etc.... Voici comment obtenir ce détail :

Pour obtenir ces informations pour tous les comptes :

Get-LocalUser | Select-Object *

Pour obtenir ces informations pour un compte :

Get-LocalUser -Name "test-fb" | Select-Object *

IV. Désactiver le compte Administrateur local avec PowerShell

Imaginons que l'on souhaite désactiver le compte "Administrateur" local de la machine Windows pour utiliser un nouveau compte avec un nom personnalisé. Tout d'abord, nous allons ajouter le compte "test-fb" au groupe de sécurité "Administrateurs" local de la machine (oui j'aurais pu choisir mieux comme nom d'utilisateur).

Avec le cmdlet "Add-LocalGroupMember", nous ajoutons notre utilisateur au groupe "Administrateurs" :

Add-LocalGroupMember -Group "Administrateurs" -Member "test-fb"

Puis, si nous listons les membres du groupe "Administrateurs", nous pouvons voir que le compte "test-fb" est bien présent :

Get-LocalGroupMember -Group "Administrateurs"

Attention, sur un Windows en anglais, le nom du groupe sera "Administrators".

PowerShell - Ajouter compte groupe administrateurs

Il ne reste plus qu'à désactiver le compte "Administrateur" natif créé à l'installation de la machine :

Disable-LocalUser -Name "Administrateur"

Voilà, le compte "Administrateur" est désactivé sur la machine locale. À la place, nous pouvons utiliser le compte "test-fb" ! Ce dernier pourrait être géré par une stratégie Windows LAPS ! 🙂

V. Gérer les groupes locaux avec PowerShell

Tout d'abord, la longue liste des groupes de sécurité locaux intégrés à Windows peut être obtenue avec une simple commande :

Get-LocalGroup

En entreprise, c'est assez rare que l'on ait besoin de créer un nouveau groupe de sécurité local ou d'en supprimer un. Par contre, nous sommes régulièrement amenés à ajouter ou supprimer des membres de ces groupes. Par exemple, si l'on souhaite donner des droits d'administration sur une machine à un utilisateur ou un groupe du domaine Active Directory.

Pour ajouter le compte "IT-Connect\admin.fb" (compte utilisateur sur le domaine AD) en tant que membre du groupe "Administrateurs", nous utiliserons cette syntaxe :

Add-LocalGroupMember -Group "Administrateurs" -Member "IT-Connect\admin.fb"

Nous pouvons aussi ajouter plusieurs éléments d'un coup :

Add-LocalGroupMember -Group "Administrateurs" -Member ("IT-Connect\compte1","IT-Connect\compte2")

L'opération inverse, à savoir retirer des membres de ce groupe, n'est pas bien compliqué : il suffit de changer le nom de la commande :

Remove-LocalGroupMember -Group "Administrateurs" -Member ("IT-Connect\compte1","IT-Connect\compte2")

Si vous avez besoin de créer un nouveau groupe de sécurité local, la commande "New-LocalGroup" doit être utilisée.

VI. Conclusion

Voilà, nous venons de voir quelques commandes pratiques pour gérer les utilisateurs et groupes locaux à partir de PowerShell et du module intégré à Windows !

En complément de ce chapitre, vous pouvez consulter la documentation Microsoft pour avoir de l'aide sur les différentes commandes de ce module PowerShell.


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.