Comment supprimer un profil utilisateur Windows avec PowerShell ?
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 !
Salut
Tu n’a pas mis la commande avec le whatif, celle que tu indique est le get, c’est normal ?
Get-CimInstance -ClassName Win32_UserProfile | Where{ $_.LocalPath -eq « C:\Users\chris.tal » }
Merci je connaissait pas whatif
Salut,
Oui c’est normal, je me suis dit qu’avec les explications ça suffirait, mais je vais rajouter la commande pour que ce soit plus simple 🙂
Merci pour ton site et tout ton partage Florian Burnel, c’est un véritable puis de connaissance et référence pour moi dans mon travail !
Nicolas de Montréal.
Merci beaucoup Nicolas, c’est sympa! 🙂
Bonjour,
Ce script ne fonctionne pas du 1er coup je m’explique : si t’es loggué avec un compte user, tu fermes ta session et tu l’ouvres avec un compte admin pour supprimer le profil : ca marche pas car il est toujours en mémoire, de la même manière rebooter ne suffit pas dans pas mal de cas…
Cdlt,
Bonjour,
Effectivement le dossier Utilisateur est bien supprimé dans C:\Users et n’est plus visible dans Profil des utilisateurs du Panneau de configuration.
Toutefois, il apparaît toujours dans Gestion de l’ordinateur \ Outils système \ Utilisateurs et groupes locaux
Ne manquerait-il pas une entrée à supprimer quelque part ?
Merci