Hoe verwijder ik verouderde gebruikersprofielen in Windows?

Het omgaan met oude of verlaten gebruikersprofielen kan een behoorlijke klus zijn, vooral op RDS-servers (Remote Desktop Services) waar profielen zich in de loop der tijd blijven opstapelen. Als u ooit hebt gemerkt dat honderden van deze profielen veel schijfruimte in beslag nemen en dat het handmatig verwijderen ervan voelt als een gevecht tegen een hydra, dan bent u niet de enige. Het goede nieuws is dat er verschillende manieren zijn om dit aan te pakken, of u het nu handmatig doet, via Groepsbeleid of met een PowerShell-script. Het doel is altijd hetzelfde: die verouderde profielen opruimen en uw systeem netjes houden. Maar let op: het aanpassen van profielen, met name registerwijzigingen, kan misgaan als u niet voorzichtig bent, dus test altijd eerst en maak een back-up. Hieronder vindt u een aantal praktische manieren om dit te doen, met details die u later wellicht wat hoofdbrekens kunnen besparen.

Een gebruikersprofiel handmatig verwijderen in Windows

Handmatig verwijderen via de geavanceerde systeeminstellingen

Deze methode is vrij voor de hand liggend als je de voorkeur geeft aan een grafische gebruikersinterface. Het is vooral handig voor het verwijderen van profielen per geval, met name als iemand is vertrokken of als je een hele reeks computers wilt opruimen. De reden dat het werkt, is dat het de registervermelding van het profiel verwijdert en de bijbehorende map wist, waardoor het een grondige verwijdering is – maar alleen voor profielen die je één voor één verwijdert. Handig als je maar met een paar profielen te maken hebt.

  • Open de geavanceerde systeeminstellingen door SystemPropertiesAdvancedin het vak ‘Uitvoeren’ ( Win + R) te typen.
  • Klik op Instellingen onder Gebruikersprofielen.
  • In de lijst ziet u de profielgroottes en paden. Selecteer het profiel dat u wilt verwijderen en klik op Verwijderen. Deze methode werkt het register bij en verwijdert de map automatisch, wat handig is omdat handmatig wijzigen van registersleutels tot problemen kan leiden, tenzij u precies weet wat u doet.

In nieuwere Windows-versies zoals 11 of 10 kun je ook naar InstellingenAccountsToegang tot werk of school gaan en daar gebruikersprofielen verwijderen. Dit is een snelle manier om dit via de grafische interface te doen. Houd er wel rekening mee dat dit alleen werkt als het profiel niet actief in gebruik is of vergrendeld is.

Veel beheerders proberen simpelweg de profielmap te verwijderen C:\Users. Dat is een grote fout: het kan een rommel in het register achterlaten, profielfouten veroorzaken of zelfs dingen onbruikbaar maken. Het is beter om de map op te schonen via de grafische gebruikersinterface of, indien mogelijk, via het register.

Register opschonen

Soms moet je de registervermelding handmatig verwijderen HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList. Kort gezegd: elk gebruikersprofiel heeft een eigen sleutel met de naam van de SID. Zoek de sleutel met het ProfileImagePath die verwijst naar de profielmap van de gebruiker en verwijder die sleutel. Op die manier probeert Windows geen profiel meer te laden dat niet meer bestaat en worden fouten in de gebeurtenislogboeken voorkomen.

  • Open regedit.exe.
  • Navigeer naar HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
  • Doorzoek de sub-sleutels (elk is een SID).Wanneer je ziet dat ProfileImagePath verwijst naar de gebruiker die je wilt verwijderen, verwijder dan die sub-sleutel.

Pro-tip: het is handig om eerst de sleutel te exporteren, voor het geval dat. En als je het wilt automatiseren, kan PowerShell het zware werk voor je doen, wat een redder in nood is bij het opruimen van grote hoeveelheden gegevens.

Profielen verwijderen met PowerShell

Voor wie graag scripts gebruikt, is PowerShell perfect. De onderstaande opdracht zoekt een specifiek profiel op basis van de gebruikersnaam en verwijdert het, waarbij zowel de schijfmap als de registervermelding worden gewist. Het is snel, herhaalbaar en maakt gebruik van ingebouwde opdrachten – geen ingewikkelde modules nodig.

Get-CimInstance -Class Win32_UserProfile | Where-Object { $_. LocalPath.split('\\')[-1] -eq 'j.smith' } | Remove-CimInstance 

Vervang `j.smith` door de daadwerkelijke gebruikersnaam. In sommige configuraties moet u PowerShell mogelijk als beheerder uitvoeren om voldoende machtigingen te verkrijgen. Bij mij werkte het op meerdere machines; op andere machines moet u het mogelijk twee keer uitvoeren of de computer opnieuw opstarten.

Je kunt profielen ook op afstand verwijderen met PowerShell-remotebeheer. Zorg er wel voor dat je remotebeheer inschakelt op de doelmachine en voer een commando uit zoals:

$comp = "mun-wks92s3" $user = "j.smith" Invoke-Command -ComputerName $comp -ScriptBlock { param($user) Get-CimInstance -Class Win32_UserProfile | Where-Object { $_. LocalPath.split('\\')[-1] -eq $user } | Remove-CimInstance } -ArgumentList $user 

Dit is handig als u meerdere servers of RDS-hosts beheert, zolang u ervoor zorgt dat externe PowerShell correct is geconfigureerd.

GPO: Gebruikersprofielen verwijderen die ouder zijn dan een bepaald aantal dagen

Automatiseer het opruimen via groepsbeleid.

Windows heeft een ingebouwde functie om dit automatisch te doen, wat ideaal is om rommel te voorkomen. Als profielen een tijdje niet zijn gebruikt, kan het systeem zo worden ingesteld dat ze bij het opnieuw opstarten worden verwijderd. Dit bespaart beheerderstijd en schijfruimte. Dit is vooral handig voor RD-farms, waar inactieve profielen vaak oneindig lang blijven bestaan.

  1. Identificeer de organisatie-eenheid (OU) die de doelcomputers bevat (klik met de rechtermuisknop in Active Directory-gebruikers en -computers, selecteer ‘ Een groepsbeleidsobject in dit domein maken en hier koppelen ‘).
  2. Geef het groepsbeleidsobject een zinvolle naam en bewerk het vervolgens.
  3. Ga naar Computerconfiguratie → Beheersjablonen → Systeem → Gebruikersprofielen.
  4. Schakel de optie in om gebruikersprofielen ouder dan een bepaald aantal dagen te verwijderen bij het herstarten van het systeem.
  5. Geef een aantal dagen op, bijvoorbeeld 45 of 90 dagen, afhankelijk van hoe vaak je wilt dat profielen worden opgeschoond.

Zodra dat is ingesteld en het beleid is vernieuwd (meestal na een herstart of via de opdrachtregel gpupdate /force), verwijdert Windows automatisch profielen die binnen die periode niet zijn gebruikt. Handig – geen handmatige opruiming nodig. Vergeet niet: zorg ervoor dat de systeemklok correct is ingesteld; anders kan Windows denken dat profielen actief zijn terwijl dat niet het geval is, of andersom.

Deze instelling is gebaseerd op de tijdstempel van het laatste gebruik van het profiel, wat in moderne Windows-versies betrouwbaarder is dan oudere methoden die uitsluitend afhankelijk waren van de wijzigingsdatum van bestanden.

Opmerking:

Deze aanpak werkt mogelijk niet zo soepel op sommige oudere Windows-versies, en bepaalde profielen, zoals lokale beheerders of systeemaccounts, worden niet aangepast. Het is raadzaam om eerst enkele tests uit te voeren op een niet-productieomgeving om te zien hoe het werkt en ervoor te zorgen dat er niets belangrijks onbedoeld wordt verwijderd.

Oude gebruikersprofielen verwijderen met PowerShell-scripts

Grootschalige opschoning van inactieve profielen

Als je iets gerichter wilt, is scripting de oplossing. Je kunt bijvoorbeeld een idee krijgen van hoeveel ruimte profielen in beslag nemen door hun grootte te meten – zoiets als een snel overzicht, want Windows doet dit niet standaard.

gci -force 'C:\Users\' | Where-Object { !($_. Attributes -match "ReparsePoint") } | ForEach-Object { $size = 0 gci -Recurse -Force $_. FullName | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum "{0:N2} GB" -f ($size / 1GB) }

Dit script slaat symbolische links over en berekent de totale profielgrootte, waardoor een duidelijker beeld van het schijfgebruik ontstaat.

Om vervolgens oude profielen (bijvoorbeeld profielen die langer dan 60 dagen inactief zijn) te identificeren en te verwijderen, komt dit codefragment goed van pas:

Get-WMIObject -Class Win32_UserProfile | Where-Object { (!$_. Special) -and ($_. ConvertToDateTime($_. LastUseTime) -lt (Get-Date).AddDays(-60)) } | Measure-Object | Select-Object Count, Sum

Maar om ze daadwerkelijk te verwijderen, is een uitgebreider script nodig dat profielen weergeeft, het laatste gebruik en de grootte controleert, en vervolgens kun je besluiten om ze direct te verwijderen of met een bevestiging door eerst de parameter -WhatIf toe te voegen. Vergeet niet om deze scripts altijd eerst met -WhatIf uit te voeren om onbedoelde verwijderingen te voorkomen. Het is beter om te controleren wie er voor verwijdering wordt gemarkeerd.

Vergeet de uitsluitingen niet.

Sommige profielen wilt u absoluut behouden, bijvoorbeeld systeemaccounts of bepaalde actieve gebruikersaccounts. U kunt een uitzonderingslijst aan uw script toevoegen om te voorkomen dat profielen zoals ‘Openbaar’, ‘Beheerder’ of ‘service’ worden verwijderd.

# List of profiles to exclude $exclude = @("Public", "admin", "svc") Get-WMIObject -Class Win32_UserProfile | Where-Object { -not $_. Special -and ($_. ConvertToDateTime($_. LastUseTime) -lt (Get-Date).AddDays(-60)) -and ($exclude -notcontains $_. LocalPath. Split('\')[-1]) } | Foreach-Object { # To actually delete, remove the comment below # $_ | Remove-WmiObject # And run with -WhatIf first Write-Host "Would delete" $_. LocalPath }

Heb geduld met deze scripts; soms zijn profielen hardnekkig of vergrendeld. In sommige gevallen helpt een herstart vóór het opruimen om eventuele sessievergrendelingen op te heffen.

Samenvatting

Het opschonen van oude gebruikersprofielen is niet bepaald de meest aantrekkelijke klus, maar het is noodzakelijk om je systeem overzichtelijk te houden en te voorkomen dat de schijfruimte op gedeelde servers opraakt. Of je nu handmatig verwijdert, groepsbeleidsobjecten (GPO’s) instelt of aangepaste PowerShell-scripts schrijft, er is een methode voor elk ervaringsniveau. Vergeet niet om te testen, belangrijke gegevens te back-uppen en goed te controleren wat je verwijdert – profielen kunnen belangrijke informatie bevatten. En als je dit een paar keer hebt gedaan, wordt het routine, waardoor je later uren bespaart.

Samenvatting

  • Gebruik de geavanceerde systeeminstellingen om individuele profielen handmatig op te schonen.
  • Configureer Groepsbeleid om oude profielen na een bepaalde tijd automatisch te verwijderen.
  • Gebruik PowerShell-scripts voor het beheren van profielen in bulk of geautomatiseerd.
  • Test scripts altijd eerst op testservers of virtuele machines, vooral als je gebruikmaakt van opdrachten op afstand.
  • Wees voorzichtig met het wijzigen van registerinstellingen; maak een back-up voordat u wijzigingen aanbrengt.
  • Sluit kritieke accounts uit tijdens het opschonen om te voorkomen dat belangrijke profielen worden verwijderd.

Laten we hopen dat dit helpt.