Odstranění starých uživatelských profilů Windows pomocí GPO nebo PowerShell

Na pracovních stanicích a serverech Windows, zejména na terminálových serverech RDS (Remote Desktop Services), je třeba pravidelně čistit adresář C: \ Users ze starých uživatelských profilů (uvolnění uživatelé, uživatelé, kteří server delší dobu nepoužívali atd.).

Hlavním problémem terminálových serverů je neustálé zvyšování velikosti adresářů uživatelských profilů na disku. Tento problém je částečně vyřešen zásadami kvót velikosti uživatelského profilu pomocí kvót FSRM nebo NTFS, roamingových složek atd. Ale s velkým počtem uživatelů terminálových serverů se v průběhu času ve složce C: \ Users hromadí obrovské množství adresářů s nepotřebnými profily uživatelů..

Obsah:

  • Ručně smažte uživatelský profil ve Windows
  • Zásady skupiny pro automatické mazání starých profilů
  • Vymazání serveru ze starých uživatelských profilů pomocí prostředí PowerShell

Ručně smažte uživatelský profil ve Windows

Mnoho začínajících správců se snaží ručně odstranit adresář s uživatelským profilem ze složky C: \ Users. To lze provést, pokud po odstranění složky ručně odstraníte sekci uživatelského profilu s odkazem na adresář ve větvi registru HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList. Správný ruční způsob, jak odstranit uživatelský profil ve Windows, je otevřít vlastnosti systému, přejděte na Pokročilá nastavení systému -> Uživatelské profily -> Nastavení, vyberte uživatelský profil v seznamu uživatelů (sloupec Velikost označuje velikost uživatelského profilu) a klikněte na Odstranit.

Ale je to ruční způsob, ale chci automatizaci.

Zásady skupiny pro automatické mazání starých profilů

Systém Windows má vestavěné zásady skupiny pro automatické mazání starých uživatelských profilů starších než xx dní. Tato politika je v sekci. Konfigurace počítače -> Administrativní šablony -> Systém -> Uživatelské profily (Konfigurace počítače -> Šablony pro správu -> Systém -> Profily uživatelů) a nazývá se „Odstranění uživatelských profilů po restartu po zadaném počtu dní“(Odstranit uživatelské profily starší než zadaný počet dní při restartu systému). Tuto možnost můžete povolit v místním editoru zásad (gpedit.msc) nebo pomocí zásad domény z konzoly GPMC.msc..

Povolte zásadu a určete, po kolik dní je uživatelský profil považován za neaktivní, a služba „Windows User Profile Service“ může takový profil při příštím restartování automaticky odstranit. Obvykle se vyplatí specifikovat nejméně 45–90 dní.

Při používání této zásady musíte mít jistotu, že při vypnutí / restartování serveru nedochází k problémům se systémovým časem (čas nezmizí), jinak mohou být aktivní uživatelské profily odstraněny.

Hlavní problémy s touto metodou automatického zúčtování profilů čekají na restartování serveru a jsou neselektivní (nemůžete zabránit vymazání určitých profilů, například místních účtů, správců atd.). Také tato zásada nemusí fungovat, pokud nějaký software třetích stran (nejčastěji je antivirový) přistupuje k souboru NTUSER.DAT v uživatelských profilech a aktualizuje datum posledního použití.

Vymazání serveru ze starých uživatelských profilů pomocí prostředí PowerShell

Namísto použití zásady pro automatické čištění profilů popsané výše můžete pomocí jednoduchého skriptu PowerShell najít a odstranit profily neaktivních nebo blokovaných uživatelů..

Nejprve se pokusíme vypočítat velikost profilu každého uživatele ve složce C: \ Users pomocí jednoduchého skriptu z článku „Velikost výstupní složky pomocí PowerShell“:

gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. fullname -ErrorAction SilentlyContinue | % $ len + = $ _. length
$ _. celé jméno, '0: N2 GB' -f ($ len / 1Gb)
$ sum = $ sum + $ len

„Celková velikost profilu“, '0: N2 GB' -f ($ sum / 1Gb)

Celková celková velikost všech uživatelských profilů v adresáři C: \ Users je přibližně 22 GB.

Nyní uvedeme uživatele, jejichž profil nebyl používán déle než 60 dnů. Pro vyhledávání můžete použít hodnotu pole profilu LastUseTime..

Get-WMIObject - třída Win32_UserProfile | Kde (! $ _. Special) - a ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-60)) | Measure-Object

Na terminálovém serveru jsem měl 143 profilů neaktivních uživatelů (celková velikost asi 10 GB).

Chcete-li odstranit všechny tyto profily, stačí přidat přesměrování seznamu do příkazu Remove-WmiObject (před použitím skriptu odstranit je vhodné znovu zkontrolovat jeho výstup pomocí parametru -WhatIf):

Get-WMIObject - třída Win32_UserProfile | Kde (! $ _. Special) - a (! $ _. Loaded) - a ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-30)) | Remove-WmiObject -WhatIf

Aby nedošlo k odstranění profilů některých uživatelů, například speciálních účtů systémových a síťových služeb, účtu místního správce, uživatelů s aktivními relacemi, seznamu účtů výjimek), musíte skript upravit takto:

# Seznam účtů, jejichž profily nelze smazat
$ ExcludedUsers = "Public", "zenoss", "svc", "user_1", "user_2"
$ LocalProfiles = Get-WMIObject -class Win32_UserProfile | Kde (! $ _. Special) - a (! $ _. Loaded) - a ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-60))
foreach ($ LocalProfile v $ LocalProfiles)

if (! ($ ExcludedUsers-like $ LocalProfile.LocalPath.Replace ("C: \ Users \", ""))))

$ LocalProfile | Remove-WmiObject
Write-host $ LocalProfile.LocalPath, „profil odstraněn“ -ForegroundColor Magenta

Spuštění tohoto skriptu můžete nakonfigurovat pomocí skriptu zásad pro vypnutí skupiny nebo podle plánu plánovače. (Před nastavením automatického mazání profilů pečlivě otestujte skript ve vašem prostředí!).

Skript můžete upravit tak, aby automaticky mazal uživatele všech uživatelů, kteří jsou přidáni do konkrétní skupiny AD (například skupina DisabledUsers):

$ users = Get-ADGroupMember -Identity DisabledUsers | Foreach $ _. Sid.Value
$ profiles = Get-WmiObject Win32_UserProfile
$ profily | Kde $ users -eq $ _. Sid | Foreach $ _. Delete ()