Windows 10 – Vanhojen käyttäjäprofiilien poistaminen PowerShellillä

Töissä piti joskus aiemmin poistella vanhoja opiskelijaprofiileja ATK-luokan koneilta. Manuaalisessa työssä ei ole järkeä, sillä jokaiselle käyttäjälle luodaan oma kotihakemisto, sekä rekisteriavain rekisteriavaimeen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Microsoftin oma ohje kaikkien käyttäjäprofiilien poistamiselle mainitsi koko ProfileList avaimen poistamisen. Tämä on kuitenkin typerää, sillä kone on käyttökelvoton, ellei siellä ole vähintään yhtä profiilia. Tyypillisesti uudet käyttäjäprofiilit tehdään Default-userin pohjalta. Lisäksi Windowsissa on oletuksena muutamia käyttäjiä, kuten LocalService ja NetworkService, jotka tarvitaan käyttöjärjestelmän toimintaa varten. Näin ollen, niitä ei tule poistaa.

Netistä löytyy useita esimerkkijä profiilien poistamiseen, mutta tässä on se skripti, jota itse käytin:

#Get all local users
$Users = Get-WmiObject -Class Win32_UserProfile
#Do not remove delete these users
$IgnoreList = "Default", "NetworkService", "LocalService", "SystemProfile", "Public", "Admin", "markus.pyharanta"

:OuterLoop
foreach ($User in $Users) {
foreach ($name in $IgnoreList) {
if ($User.localpath -like "*\$name") {
continue OuterLoop
}
}

$User.Delete()
}

Write-Host 'All done!'

Tämä poistaa sekä rekisterimerkinnät että kyseisten käyttäjien kotihakemiston. $IgnoreList -muuttujaan merkitsin kaikki käyttäjät, joita ei tullut poistaa (mukaanlukien oma käyttäjäni).

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
Scroll to Top