Comment ajouter, supprimer et modifier des utilisateurs et groupes locaux avec PowerShell
Sep 18, 2018
La gestion des utilisateurs et des groupes locaux avec PowerShell est simplifiée grâce au module Microsoft.PowerShell.LocalAccounts, qui fournit des cmdlets pour créer, modifier, désactiver ou supprimer des comptes et des groupes. Les administrateurs peuvent automatiser des tâches telles que l'ajout d'utilisateurs aux groupes, la réinitialisation des mots de passe ou l'examen des adhésions, tout en gérant également les comptes liés à Microsoft et Azure AD-linked accounts. La gestion à distance via les sessions PowerShell simplifie davantage l'administration, bien que l'audit des changements reste essentiel pour la sécurité et la conformité.
Pour aider les administrateurs à gérer plus facilement les utilisateurs et groupes locaux avec PowerShell, Microsoft fournit une collection de cmdlets appelée Microsoft.PowerShell.LocalAccounts. Auparavant, il fallait télécharger et importer explicitement cette collection dans PowerShell, et aussi installer le Windows Management Framework 5.1 ; dans les systèmes d'exploitation Windows Server 2016 et Windows 10, la collection de cmdlets est incluse en tant que module standard.
Il y a 15 cmdlets dans le module LocalAccounts. Vous pouvez voir la liste complète en exécutant la commande suivante :
Get-Command -Module Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember — Ajoutez un utilisateur au groupe local
- Disable-LocalUser —Désactiver un compte d'utilisateur local
- Enable-LocalUser — Activer un compte utilisateur local
- Get-LocalGroup — Afficher les préférences de groupe local
- Get-LocalGroupMember — Consultez la liste de tous les membres du groupe local
- Get-LocalUser — Consultez les préférences d’un compte utilisateur local
- New-LocalGroup — Créer un nouveau groupe local
- New-LocalUser — Créez un nouveau compte utilisateur local
- Remove-LocalGroup — Supprimez un groupe local
- Remove-LocalGroupMember — Retirer un membre d'un groupe local
- Remove-LocalUser — Supprimez un compte utilisateur local
- Rename-LocalGroup — Renommer un groupe local
- Rename-LocalUser — Renommez un compte utilisateur local
- Set-LocalGroup — Modifiez les paramètres d'un groupe local
- Set-LocalUser — Modifier les paramètres de compte d'un utilisateur local
Gestion des comptes d'utilisateur locaux avec PowerShell
Voyons comment vous pouvez utiliser ces commandes pour effectuer des tâches courantes liées à la gestion des utilisateurs locaux sur un ordinateur Windows 10.
Lister les utilisateurs et leurs propriétés avec PowerShell
Tout d'abord, obtenons une liste de tous les comptes d'utilisateur locaux sur la machine. Nous utiliserons la cmdlet Get-LocalUser :
Get-LocalUser
Comme vous pouvez le voir, nous avons deux comptes d'utilisateur locaux, et l'un d'eux est désactivé (celui qui a « False » dans la colonne « Enabled »).
Si vous souhaitez afficher toutes les propriétés et leurs valeurs pour un compte d'utilisateur local, vous devez utiliser le cmdlet Get-LocalUser avec les paramètres suivants :
Get-LocalUser -Name ‘guest’ | Select-Object *
Pour obtenir la valeur d'un attribut spécifique de compte utilisateur local, tapez son nom après le paramètre Select-Object. Dans cet exemple, nous souhaitons connaître la valeur de l'attribut PasswordLastSet pour le compte avec le nom d'utilisateur « administrator » :
Get-LocalUser -Name ‘administrator’ | Select-Object PasswordLastSet
Création d'un utilisateur local avec PowerShell
Créons un nouvel utilisateur à l'aide de la cmdlet New-LocalUser. Cette cmdlet peut créer les types de comptes d'utilisateur suivants :
- Comptes d'utilisateur local Windows
- Comptes Microsoft
- Comptes Azure Active Directory
Lors de la création d'un compte utilisateur local, ne saisissez jamais le mot de passe en texte clair ; convertissez-le toujours en une chaîne sécurisée en utilisant le paramètre ?AsSecureString ou ?ConvertTo-SecureString. Voici la commande pour créer un nouveau compte utilisateur local :
$UserPassword = Read-Host –AsSecureString
New-LocalUser "Netwrix" -Password $UserPassword -FullName "Netwrix" -Description "CompleteVisibility"
Dans un environnement Windows 10, les utilisateurs peuvent s'autoriser sous leurs comptes Microsoft, ainsi nous pouvons créer un nouveau compte utilisateur local qui se lie aux identifiants d'un compte Microsoft. Utilisez le script suivant pour cela (notez que vous n'avez pas besoin de taper le mot de passe car il est stocké dans le cloud Microsoft) :
New-LocalUser -Name "MicrosoftAccountSomeAccount@outlook.com" -Description "Microsoft Account"
Pour créer un compte local qui se lie à votre Azure AD, utilisez la commande suivante :
New-LocalUser -Name "AzureADNetwrix@enterprise.com" -Description "Azure AD Account"
Modifier le mot de passe d'un utilisateur local ou les propriétés du mot de passe avec PowerShell
Pour changer le mot de passe d'un compte utilisateur local, nous devons utiliser le cmdlet Set-LocalUser. Changeons le mot de passe de l'administrateur local :
$UserPassword = Read-Host –AsSecureString
Set-LocalUser -Name Administrator -Password $UserPassword –Verbose
Pour définir l'option Password never expires pour un utilisateur local avec PowerShell, nous devons exécuter le script suivant :
Set-LocalUser -Name Netwrix –PasswordNeverExpires $False
Suppression d'un compte utilisateur local avec PowerShell
Pour supprimer un compte d'utilisateur local, vous devez utiliser la cmdlet Remove-LocalUser :
Remove-LocalUser -Name Netwrix -Verbose
Gestion des groupes locaux avec PowerShell
Maintenant, tournons notre attention des utilisateurs locaux vers les groupes locaux.
Examen des groupes locaux avec PowerShell
Tout d'abord, obtenons une liste de tous les groupes sur notre serveur Windows :
Get-LocalGroup
Ajout d'un groupe local avec PowerShell
Maintenant, créons un nouveau groupe :
New-LocalGroup -Name 'Netwrix Users' -Description 'Netwrix Users Group'
Ajout d'utilisateurs à un groupe local avec PowerShell
Pour ajouter un utilisateur (ou un groupe) à un groupe local, nous devons utiliser la cmdlet Add-LocalGroupMember. Par exemple, supposons que nous voulons ajouter des utilisateurs au groupe des Administrateurs locaux, mais nous ne voulons pas les ajouter un par un. Ajoutons un groupe aux Administrateurs locaux, à savoir le groupe “Netwrix Users” :
Add-LocalGroupMember -Group 'Administrators' -Member ('Netwrix',’Netwrix Users') –Verbose
Si votre ordinateur ou serveur fait partie du domaine, vous pouvez également ajouter des comptes de domaine et des groupes aux groupes locaux afin de donner à ces utilisateurs des droits locaux spéciaux sur le serveur. Ajoutez-les en utilisant le format « DomainNameUser » (pour un utilisateur) ou « DomainNameDomain Group » (pour un groupe).
Affichage de l'appartenance à un groupe particulier avec PowerShell
Maintenant, listons tous les membres d'un groupe local particulier :
Get-LocalGroupMember -Group 'Netwrix Users'
Comme vous pouvez le voir, la commande affiche tous les comptes locaux et les groupes qui sont membres du groupe « Netwrix Users ». Bien que seuls les comptes et groupes locaux soient listés ici, cette commande montrera également tous les utilisateurs et groupes de domaine, ainsi que tous les comptes Microsoft et Azure AD.
Affichage de tous les groupes dont un utilisateur est membre à l'aide de PowerShell
Pour lister tous les groupes dont un utilisateur particulier est membre, nous exécuterions le script suivant :
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member 'Guest' –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}
Suppression d'un groupe local avec PowerShell
Pour retirer un compte d'utilisateur local d'un groupe, vous devez utiliser la cmdlet Remove-LocalGroupMember :
Remove-LocalGroupMember -Group 'Netwrix Users' –Member 'guest'
Gestion à distance des utilisateurs et groupes locaux avec PowerShell
Si vous souhaitez gérer à distance les comptes d'utilisateur locaux et les groupes, vous devez vous connecter aux postes de travail distants via WinRM en utilisant les cmdlets Invoke-Command et Enter-PSSession. Par exemple, si nous voulons afficher à distance l'appartenance au groupe Admin local sur plusieurs ordinateurs, nous devons exécuter le script suivant :
$search = new-pssession -computer pcname1,pcname2,pcname3
invoke-command -scriptblock {Get-LocalGroupMember -Group 'Administrators'} -session $search -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"
Comme vous pouvez le voir, il est assez facile de gérer les groupes et utilisateurs locaux via PowerShell, mais pour garantir la sécurité, la conformité et la continuité des affaires, il est essentiel d'auditer tous ces changements. Pour en savoir plus sur la configuration de l'audit natif, veuillez consulter le Windows Server Auditing Quick Reference Guide.
Partager sur
En savoir plus
À propos de l'auteur
Jeff Melnick
Directeur de l'ingénierie des systèmes
Jeff est un ancien directeur de l'ingénierie des solutions mondiales chez Netwrix. Il est un blogueur, conférencier et présentateur de longue date chez Netwrix. Dans le blog Netwrix, Jeff partage des astuces et des conseils qui peuvent améliorer de manière significative votre expérience en administration système.
En savoir plus sur ce sujet
Créez des utilisateurs AD en masse et envoyez leurs identifiants par e-mail à l'aide de PowerShell
Comment créer, modifier et tester des mots de passe en utilisant PowerShell
Comment ajouter et supprimer des groupes AD et des objets dans des groupes avec PowerShell
Confiances dans Active Directory
Attaques de rançongiciels sur Active Directory