I. Présentation
Dans ce tutoriel, nous allons apprendre à supprimer un profil utilisateur Windows à l'aide de PowerShell, de façon propre ! Cet article fait suite à celui déjà en ligne et qui donne la marche à suivre à l'aide de l'interface graphique.
Dans cet exemple, j'utilise une machine sous Windows 11, mais la procédure est identique sous Windows 10.
Pour rappel, à partir de l'interface graphique c'est dans les "Paramètres système avancé" que l'on peut lister et supprimer les profils utilisateurs. Ici, on peut voir la présence de l'utilisateur "IT-Connect\chris.tal" que je vais tenter de supprimer en PowerShell !
Second rappel, on ne supprime pas directement le dossier de l'utilisateur dans "C:\Users" sinon on se retrouve avec des problèmes de profils temporaires si l'utilisateur vient à se reconnecter sur cette même machine.
II. PowerShell pour supprimer un profil utilisateur
On aurait pu utiliser les commandes Get-WmiObject et Remove-WmiObject, mais elles sont devenues obsolètes (voir ici). Alors, il faut préférer l'utilisation de Get-CimInstance et Remove-CimInstance, comme nous allons le faire dans cet exemple.
Pour lister les profils utilisateurs de la machine locale, on va utiliser la commande suivante :
Get-CimInstance -ClassName Win32_UserProfile
Note : pour agir sur une machine distante, il convient d'ajouter le paramètre -ComputerName à la commande Get-CimInstance, de façon à préciser l'ordinateur cible.
Toutefois, elle retourne un ensemble de propriétés... Sélectionnons uniquement la propriété LocalPath pour que ce soit plus lisible :
Get-CimInstance -ClassName Win32_UserProfile | ft LocalPath
L'utilisateur "IT-Connect\chris.tal" est bien retourné dans cette liste, comme les autres utilisateurs qui ont ouvert une session sur cette machine.
Désormais, il va falloir cibler précisément le profil de notre utilisateur pour le supprimer. On peut s'appuyer sur diverses propriétés comme le SID, ou encore le LocalPath que l'on a déjà utilisé. Ce qui va donner :
Get-CimInstance -ClassName Win32_UserProfile | Where{ $_.LocalPath -eq "C:\Users\chris.tal" }
La commande ci-dessus doit retourner uniquement les informations du compte ciblé. Avant de procéder à la suppression (irréversible !), utilisez la commande Remove-CimInstance avec le paramètre -WhatIf pour faire une simulation.
Ce qui donne :
Get-CimInstance -ClassName Win32_UserProfile | Where{ $_.LocalPath -eq "C:\Users\chris.tal" } | Remove-CimInstance -WhatIf
Dans mon cas, cela retourne :
What if: Performing the operation "Remove-CimInstance" on target "Win32_UserProfile (SID = "S-1-5-21-602238038-4219226198-393252187...)".
Puis, il suffit de retirer -WhatIf pour supprimer réellement le profil de cet utilisateur. Ce qui donne :
Get-CimInstance -ClassName Win32_UserProfile | Where{ $_.LocalPath -eq "C:\Users\chris.tal" } | Remove-CimInstance
Suite à l'exécution de cette commande PowerShell, le profil de l'utilisateur a été supprimé ! Il n'apparaît plus dans la liste des profils visible avec l'interface graphique et dans "C:\Users", son répertoire n'est plus là !
Pour finir, voici une autre requête PowerShell que vous pouvez exécuter pour lister les comptes qui ne se sont pas connectés sur cette machine depuis au moins 31 jours (valeur adaptable dans la commande) :
Get-CimInstance -ClassName Win32_UserProfile | Where {($_.Special -eq $false) -and (($_.LastUseTime) -lt (Get-Date).AddDays(-31))} | ft LocalPath
Dans cette commande, on exclut les comptes spéciaux et on se base sur la propriété LastUseTime que l'on compare avec la date du jour. Cela pourrait être utilisé conjointement avec Remove-CimInstance pour supprimer les comptes inutilisés depuis X jours.
III. Conclusion
Suite à la lecture de ce tutoriel, vous êtes en mesure de supprimer un ou plusieurs profils utilisateurs Windows avec PowerShell, que ce soit en local ou à distance !
The post Comment supprimer un profil utilisateur Windows avec PowerShell ? first appeared on IT-Connect.