Uklanjanje starih Windows korisničkih profila pomoću GPO ili PowerShell

Na Windows radnim stanicama i poslužiteljima, posebno na terminalnim poslužiteljima RDS (usluge udaljene radne površine), povremeno postoji potreba za čišćenje direktorija C: \ korisnika sa starih korisničkih profila (otpušteni korisnici, korisnici koji poslužitelj već duže vrijeme ne koriste itd.).

Glavni problem terminalskih poslužitelja je neprestano povećanje veličine direktorija korisnika na disku. Ovaj problem je djelomično riješen pravilima o kvotama veličine profila korisnika pomoću FSRM ili NTFS kvota, roaming mapa itd. No s velikim brojem korisnika terminalskih poslužitelja, ogroman broj direktorija s nepotrebnim korisničkim profilima nakuplja se s vremenom u mapi C: \ Users..

sadržaj:

  • Ručno izbrišite korisnički profil u sustavu Windows
  • Grupna pravila za automatsko brisanje starih profila
  • Brisanje poslužitelja iz starih korisničkih profila pomoću PowerShell-a

Ručno izbrišite korisnički profil u sustavu Windows

Mnogi početnici pokušavaju ručno izbrisati imenik s korisničkim profilom iz mape C: \ Users. To se može učiniti ako nakon brisanja mape ručno izbrišete odjeljak korisničkog profila s vezom na direktorij u podružnici registra HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList. Ispravan je ručni način brisanja korisničkog profila u sustavu Windows otvaranje svojstava sustava. Idite na Napredne postavke sustava -> Korisnički profili -> postavke, odaberite korisnički profil na popisu korisnika (stupac Veličina ukazuje na veličinu korisničkog profila) i kliknite brisanje.

Ali ovo je ručni način, ali želim automatizaciju.

Grupna pravila za automatsko brisanje starih profila

Windows ima ugrađeno grupno pravilo za automatski brisanje starih korisničkih profila starijih od xx dana. Ovo pravilo je u odjeljku. Konfiguracija računala -> Administrativni predlošci -> Sustav -> Korisnički profili (Konfiguracija računala -> Administrativni predlošci -> Sustav -> Korisnički profili) i zove se "Izbrišite korisničke profile nakon ponovnog pokretanja nakon određenog broja dana"(Brisanje korisničkih profila starijih od određenog broja dana pri ponovnom pokretanju sustava). Ovu opciju možete omogućiti u lokalnom uređivaču pravila (gpedit.msc) ili pomoću pravila domene s konzole GPMC.msc..

Omogućite pravilo i odredite nakon koliko dana se korisnički profil smatra neaktivnim, a "Usluga korisničkih profila Windows" može automatski izbrisati takav profil sljedeći put kada se ponovno pokrene. Obično je vrijedno navesti barem 45-90 dana.

Pri korištenju ovog pravila morate biti sigurni da kada isključite / ponovno pokrenete poslužitelj nema problema s vremenom sustava (vrijeme ne nestaje), inače se aktivni korisnički profili mogu izbrisati.

Glavni problemi s ovom metodom automatskog brisanja profila čekaju ponovno pokretanje poslužitelja i neselektivnost (ne možete spriječiti brisanje određenih profila, na primjer, lokalnih računa, administratora itd.). Također, ovo pravilo možda neće raditi ako neki softver drugog proizvođača (najčešće je to antivirus) pristupa korisničkom profilu NTUSER.DAT datoteci i ažurira datum zadnje upotrebe.

Brisanje poslužitelja iz starih korisničkih profila pomoću PowerShell-a

Umjesto korištenja pravila za automatsko čišćenje gore opisanih profila, možete koristiti jednostavnu skriptu PowerShell-a za pronalaženje i brisanje profila neaktivnih ili blokiranih korisnika.

Prvo ćemo pokušati izračunati veličinu profila svakog korisnika u mapi C: \ Korisnici pomoću jednostavne skripte iz članka "Veličina mape izlaznog materijala pomoću programa PowerShell":

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

"Ukupna veličina profila", '0: N2 GB' -f ($ suma / 1Gb)

Ukupna ukupna veličina svih korisničkih profila u direktoriju C: \ Korisnici iznosi oko 22 GB.

Sada ćemo navesti korisnike čiji se profil ne koristi više od 60 dana. Za pretraživanje možete koristiti vrijednost polja profila LastUseTime..

Get-WMIObject -clas Win32_UserProfile | Gdje je (! $ _. Poseban) -and ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .Dodaj (-60)) | Mjera-objekt

Na terminalskom poslužitelju imao sam 143 profila neaktivnih korisnika (ukupna veličina oko 10 GB).

Da biste uklonili sve ove profile, jednostavno dodajte popis za preusmjeravanje na naredbu Remove-WmiObject (prije upotrebe skripte za brisanje, preporučljivo je dvaput provjeriti njegov izlaz s parametrom -WhatIf):

Get-WMIObject -clas Win32_UserProfile | Gdje je (! $ _. Poseban) -and (! $ _. Loaded) -and ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-30)) | Ukloni-WmiObject -Što ako

Kako ne biste izbrisali profile nekih korisnika, na primjer, posebne račune sistemskih i mrežnih usluga, lokalni račun administratora, korisnike s aktivnim sesijama, popis računa iznimki), morate modificirati skriptu na sljedeći način:

# Popis računa čije profile nije moguće izbrisati
$ ExcludedUsers = "Javno", "zenoss", "svc", "user_1", "user_2"
$ LocalProfiles = Get-WMIObject -clas Win32_UserProfile | Gdje je (! $ _. Poseban) -and (! $ _. Loaded) -and ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-60))
foreach ($ LocalProfile u $ LocalProfiles)

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

$ LocalProfile | Uklonite-WmiObject
Write-host $ LocalProfile.LocalPath, "profil je izbrisan" -ForegroundColor Magenta

Možete konfigurirati pokretanje ove skripte putem skripte pravila o isključivanju grupe ili prema rasporedu rasporeda. (Prije postavljanja automatskog brisanja profila, pažljivo testirajte skriptu u svom okruženju!).

Skriptu možete izmijeniti tako da automatski briše korisnike svih korisnika koji su dodani u određenu grupu oglasa (na primjer, grupa DisabledUsers):

$ users = Get-ADGroupMember -Identity DisabledUsers | Foreach $ _. Sid.Value
$ profili = Get-WmiObject Win32_UserProfile
$ profili | Gdje je $ korisnika -eq $ _. Sid | Foreach $ _. Delete ()