Comment gérer les utilisateurs et groupes locaux ?
Sommaire
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 :
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".
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.