Objectif
Récupérer de l’espace et assainir un poste ou serveur multi-utilisateurs en supprimant uniquement les profils locaux devenus inutiles, après vérification de leur dernière utilisation et de leurs données, sans endommager les profils système ni les comptes encore actifs.
Prérequis
- Accès administrateur local.
- Liste des utilisateurs encore autorisés à utiliser la machine.
- Politique de conservation des données utilisateur et sauvegarde si nécessaire.
- Espace disque cible à récupérer.
- Fenêtre où les utilisateurs concernés sont déconnectés.
Procédure pas à pas
Mesurer l’espace occupé et le besoin réel
Avant suppression, vérifiez la capacité du volume et le nombre de profils. Si le problème n’est pas l’espace disque, ne transformez pas la procédure en nettoyage systématique. Identifiez les gros profils et les machines concernées. Sur un RDS ou serveur partagé, coordonnez avec les utilisateurs car un profil peut être reconnecté pendant l’opération.
Get-Volume -DriveLetter C | Select Size,SizeRemaining
Get-ChildItem C:Users -Directory -Force | Select Name,FullName
- Le besoin de nettoyage et les profils candidats sont identifiés.
Inventorier Win32_UserProfile
Utilisez Win32_UserProfile pour obtenir LocalPath, SID, Loaded, Special et LastUseTime. Ce modèle est plus fiable qu’une simple liste de dossiers. Filtrez immédiatement les profils spéciaux. Exportez la liste avant modification afin de conserver une preuve de ce qui existait.
Get-CimInstance Win32_UserProfile | Select LocalPath,SID,Loaded,Special,LastUseTime
Get-CimInstance Win32_UserProfile | Where-Object {-not $_.Special} | Export-Csv C:Tempprofiles-before.csv -NoTypeInformation -Encoding UTF8
- Les profils spéciaux et chargés sont clairement distingués des candidats.
Vérifier les comptes encore actifs
Associez chaque SID à un utilisateur local ou domaine lorsque possible et confrontez la liste avec les comptes qui doivent encore utiliser le poste. Un profil d’un utilisateur absent depuis plusieurs mois peut encore être nécessaire sur un poste d’astreinte ou une salle partagée. Ne supprimez pas uniquement sur la base du nom de dossier.
Get-LocalUser -ErrorAction SilentlyContinue | Select Name,Enabled,LastLogon
- Chaque profil candidat a une justification de suppression.
Contrôler les données non synchronisées
Inspectez les emplacements qui peuvent contenir des données uniques : Desktop, Documents, Downloads, fichiers PST locaux, profils applicatifs, clés/certificats ou dossiers métier. Si OneDrive Known Folder Move est utilisé, vérifiez que la synchronisation est terminée avant suppression. Copiez uniquement les données nécessaires vers l’emplacement approuvé.
- Aucun profil n’est supprimé tant que les données à conserver ne sont pas sécurisées.
S’assurer que le profil n’est pas chargé
Vérifiez Loaded=False et qu’aucune session interactive n’existe. Sur un serveur RDS, utilisez quser pour confirmer que l’utilisateur est déconnecté. Un profil chargé ne doit pas être supprimé ; cela peut laisser des fichiers ouverts et provoquer des erreurs de registre.
quser
Get-CimInstance Win32_UserProfile | Where-Object {$_.LocalPath -eq 'C:Users<USER>'} | Select LocalPath,Loaded,Special
- Le profil cible est déchargé et l’utilisateur n’a plus de session active.
Supprimer via l’interface Windows ou CIM
Pour une suppression ponctuelle, utilisez Paramètres système avancés > Profils des utilisateurs > Paramètres puis Supprimer. Pour une opération scriptée contrôlée, ciblez l’objet Win32_UserProfile exact et Remove-CimInstance. Ne faites pas un filtre large basé uniquement sur une date sans afficher d’abord les candidats.
$Profile = Get-CimInstance Win32_UserProfile | Where-Object {$_.LocalPath -eq 'C:Users<USER>' -and -not $_.Loaded -and -not $_.Special}
$Profile | Select LocalPath,SID,LastUseTime
$Profile | Remove-CimInstance
- Le profil est retiré de Windows et son dossier associé disparaît proprement.
Valider l’espace et les références restantes
Après suppression, vérifiez que le dossier n’existe plus et que Win32_UserProfile ne retourne plus le SID. Mesurez l’espace récupéré. Si un dossier résiduel subsiste à cause d’un fichier verrouillé, identifiez le processus avant de le supprimer ; ne forcez pas des ACL système sans comprendre le blocage.
Get-CimInstance Win32_UserProfile | Where-Object {$_.SID -eq '<SID>'}
Test-Path 'C:Users<USER>'
Get-Volume -DriveLetter C | Select SizeRemaining
- Le profil n’est plus enregistré et l’espace attendu est récupéré.
Tester une nouvelle ouverture de session si nécessaire
Si l’utilisateur doit revenir sur la machine, effectuez un test avec un compte pilote ou avec l’utilisateur après validation. Windows doit créer un nouveau profil sans message de profil temporaire. Vérifiez les applications, les lecteurs et la synchronisation OneDrive/GPO. Un profil recréé immédiatement peut indiquer que le compte devait encore être conservé.
- Une future connexion recrée proprement un profil lorsque cela est attendu.
Automatiser seulement avec une politique prudente
Si le nettoyage doit devenir récurrent, définissez une ancienneté, une liste d’exclusion et une phase report-only qui exporte les candidats sans les supprimer. Sur les parcs gérés, privilégiez les politiques de gestion de profil adaptées à l’usage. Conservez toujours des exclusions pour administrateurs locaux, comptes de service et machines partagées.
- Toute automatisation produit d’abord un rapport et ne supprime jamais un profil chargé ou spécial.
Validation
La procédure est validée lorsque :
- Les profils supprimés ne sont plus présents dans Win32_UserProfile.
- Les données utiles ont été sauvegardées ou synchronisées avant suppression.
- L’espace récupéré est mesuré.
- Aucun profil système, chargé ou utilisateur actif n’a été supprimé.
Retour arrière
- Restaurer les données utilisateur depuis la sauvegarde ou la synchronisation si un fichier nécessaire a été supprimé.
- Un profil supprimé n’a pas de restauration native immédiate : à la reconnexion, Windows crée un nouveau profil qu’il faudra reconfigurer.
- Si le profil devait être conservé, remettre les données dans le nouveau profil plutôt que recréer manuellement les clés ProfileList.
- En cas de suppression massive erronée, arrêter le script et restaurer depuis la sauvegarde/outil de gestion.
Dépannage / erreurs fréquentes
- Profil impossible à supprimer : vérifier Loaded=True, session distante ou fichier ouvert.
- Dossier reste après Remove-CimInstance : identifier les handles/verrous puis traiter le résidu.
- Connexion crée un profil temporaire : vérifier événements User Profile Service, espace disque et permissions.
- OneDrive redemande une configuration : vérifier que le compte et les politiques de synchronisation sont encore applicables.
- LastUseTime semble incohérent : ne pas utiliser cette propriété seule comme critère de suppression.