Régi Windows felhasználói profilok eltávolítása GPO vagy PowerShell használatával

A Windows munkaállomásokon és kiszolgálókon, különösen az RDS (Remote Desktop Services) terminálkiszolgálókon, időszakonként meg kell tisztítani a C: \ Users könyvtárat a régi felhasználói profiloktól (elbocsátott felhasználók, azok a felhasználók, akik már régóta nem használják a szervert stb.).

A terminálkiszolgálók fő problémája a lemezen lévő felhasználói profilkönyvtárak állandó növekedése. Ezt a problémát részben megoldja a felhasználói profil méretkvóta politikája, FSRM vagy NTFS kvóták, barangolómappák stb. Nagyon sok terminálkiszolgáló-felhasználó esetén azonban hatalmas számú szükségtelen felhasználói profillal rendelkező könyvtár halmozódik fel az idő múlásával a C: \ Users mappában.

Tartalom:

  • Felhasználói profil manuális törlése a Windows rendszerben
  • Csoportházirend a régi profilok automatikus törléséhez
  • A kiszolgáló eltávolítása a régi felhasználói profilokról a PowerShell használatával

Felhasználói profil manuális törlése a Windows rendszerben

Sok kezdő adminisztrátor megpróbálja manuálisan törölni a felhasználói profilral ellátott könyvtárat a C: \ Users mappából. Ezt akkor lehet megtenni, ha a mappa törlése után manuálisan törli a felhasználói profil szakaszt, a hivatkozással a könyvtárba a regisztrációs ágban HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList. A felhasználói profil törlése a Windowsban a helyes kézi módszer a rendszer tulajdonságainak megnyitása Speciális rendszerbeállítások -> Felhasználói profilok -> Beállítások, válassza ki a felhasználói profilt a felhasználói listából (a Méret oszlop jelzi a felhasználói profil méretét), majd kattintson a gombra Törlés.

De ez egy kézi módszer, de szeretnék az automatizálást.

Csoportházirend a régi profilok automatikus törléséhez

A Windows beépített csoportházirenddel rendelkezik az xx naposnál régebbi felhasználói profilok automatikus törléséhez. Ez az irányelv a szakaszban található. Számítógép konfigurációja -> Adminisztratív sablonok -> Rendszer -> Felhasználói profilok (Számítógépes konfiguráció -> Felügyeleti sablonok -> Rendszer -> Felhasználói profilok), és „Törölje a felhasználói profilokat egy újraindítás után, meghatározott napok után”(A megadott napoknál régebbi felhasználói profilok törlése a rendszer újraindításakor). Ezt a beállítást engedélyezheti a helyi házirend-szerkesztőben (gpedit.msc) vagy a GPMC.msc konzol domain házirendjeinek használatával..

Engedélyezze a házirendet, és adja meg, hány nap múlva tekinthető inaktív felhasználói profilnak, és a „Windows felhasználói profilszolgáltatás” automatikusan törli egy ilyen profilt, amikor legközelebb újraindul. Általában érdemes meghatározni legalább 45-90 napot.

Ennek a házirendnek a használatakor meg kell bizonyosodnia arról, hogy a kiszolgáló kikapcsolásakor / újraindításakor nincs probléma a rendszeridővel (az idő nem hamisodik meg), különben az aktív felhasználói profilok törölhetők.

A profilok automatikus tisztításának ezzel a módszerével kapcsolatos fő problémák a kiszolgáló újraindulására várnak, és nem szelektívek (nem tilthatják meg bizonyos profilok, például a helyi fiókok, rendszergazdák, stb. Eltávolítását). Ez a politika nem működik, ha valamilyen harmadik féltől származó szoftver (leggyakrabban antivírus) hozzáfér a felhasználói profilokban található NTUSER.DAT fájlhoz, és frissíti az utolsó használat dátumát.

A kiszolgáló eltávolítása a régi felhasználói profilokról a PowerShell használatával

A fentiekben ismertetett profilok automatikus tisztítására vonatkozó irányelv helyett egy egyszerű PowerShell-parancsfájlt használhat az inaktív vagy blokkolt felhasználók profiljainak megkeresésére és törlésére.

Először megpróbáljuk kiszámítani az egyes felhasználói profilok méretét a C: \ Users mappában egy egyszerű szkript segítségével a „Kimeneti mappa mérete a PowerShell használatával” cikkből:

gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. teljes név -ErrorAction SilentlyContinue | % $ len + = $ _. hossz
$ _. teljes név, '0: N2 GB' -f ($ len / 1Gb)
$ összeg = $ összeg + $ len

„Teljes profilméret”, „0: N2 GB” -f ($ összeg / 1 GB)

A C: \ Users könyvtárban található összes felhasználói profil teljes mérete körülbelül 22 GB.

Most felsoroljuk azokat a felhasználókat, akiknek profilját nem használták több mint 60 napig. Használhatja a LastUseTime profil mező értékét a kereséshez..

Get-WMIObject-osztály Win32_UserProfile | Hol (! $ _. Különleges) -és ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-60)) | Measure-Object

143 inaktív felhasználói profilom volt a terminálkiszolgálón (teljes mérete kb. 10 GB).

Az összes profil eltávolításához csak adja hozzá a listát az Eltávolítás-WmiObject parancshoz (a törlés parancsfájl használata előtt tanácsos ellenőrizni annak kimenetet a -WhatIf paraméterrel):

Get-WMIObject-osztály Win32_UserProfile | Hol (! $ _. Különleges) -és (! $ _. Betöltve) -és ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-30)) | Eltávolítás-WmiObject -WhatIf

Annak érdekében, hogy ne törölje néhány felhasználó profilját, például a speciális rendszer- és hálózati szolgáltatás-fiókokat, a helyi rendszergazdai fiókot, az aktív szekciókkal rendelkező felhasználókat, a kivételes fiókok listáját), a szkriptet a következőképpen kell módosítania:

# Azon fiókok listája, amelyek profilja nem törölhető
$ ExcludedUsers = "Nyilvános", "zenoss", "svc", “user_1”, “user_2”
$ LocalProfiles = Get-WMIObject-osztály Win32_UserProfile | Hol (! $ _. Különleges) -és (! $ _. Betöltve) -és ($ _. ConvertToDateTime ($ _. LastUseTime) -lt (Get-Date) .AddDays (-60))
foreach ($ LocalProfile in $ LocalProfiles)

if (! ($ Kizártfelhasználókhoz hasonló $ LocalProfile.LocalPath.Replace ("C: \ Users \", ""))))

$ LocalProfile | Remove-WmiObject
Write-host $ LocalProfile.LocalPath, “profil törölve” -ForegroundColor Magenta

A szkript elindítását a leállítási csoport házirend-szkriptén keresztül vagy az ütemező ütemezése szerint konfigurálhatja. (A profilok automatikus törlésének beállítása előtt ellenőrizze alaposan a szkriptet a környezetében!).

Módosíthatja a szkriptet, hogy automatikusan törölje az összes olyan felhasználót, akik hozzáadódtak egy adott AD-csoporthoz (például a DisabledUsers csoporthoz):

$ users = Get-ADGroupMember -Identity DisabledUsers | Foreach $ _. Sid.Value
$ profil = Get-WmiObject Win32_UserProfile
$ profilok | Hol $ felhasználók -eq $ _. Sid | Foreach $ _. Törlés ()