Sono da tempo alla ricerca di un metodo per la rimozione automatica di tutti i vecchi profili account, non in uso, dal disco fisso in modo da recuperare spazio, perché ogni profilo ha un suo peso, come vedremo dopo, e in certi computer aziendali, dove vi accedono decine di utenti, il disco fisso si riempie molto in fretta. In rete si trovano molti script che promettono la rimozione di questi vecchi profili utente, quando li ho provati sul campo mi hanno dato più problemi che benefici, oltre ad aver fatto qualche danno togliendo file e account che non dovevano essere toccati.
Gli script, almeno quelli che ho visto. vanno in genere a controllare la data del file NTUSER.DAT, che si trova dentro la cartella del nostro account, e alcune chiavi di registro che memorizzano l’ultimo accesso eseguito da quella persona. Il problema è che gli aggiornamenti di Windows, o anche un controllo dell’antivirus, potrebbero modificare la data del file NTUSER.DAT e le chiavi di registro, dopo alcune prove fatte, non mi sono sembrate così affidabili da garantire una cancellazione sicura.
Nell’attesa di trovare uno script affidabile, che esegua una rimozione automatica dei profili vecchi, ne ho trovati due che mi permettono di calcolare la dimensione di ogni profilo, così da trovare quelli più grandi, che valga la pena eliminare, e un piccolo script, che bisogna modificare ogni volta inserendo i nomi degli account, che cancella, senza fare danni (almeno sino ad ora) il profilo scelto.
Questo articolo è la prosecuzione di quello sulla pulizia della cartella Temp, e non solo, di tutti gli account per liberare spazio nel disco fisso.
Dimensione profili utente
Se volessimo vedere quanto spazio occupa la cartella di un account di Windows lo potremmo fare dalle proprietà della cartella, solo che io devo farlo da remoto e mi trovo con decine di account presenti nel sistema operativo.
Con il seguente script posso vedere la dimensione di ogni cartella del profilo degli account presenti, per sapere quale posso eliminare controllo la data dell’ultima modifica della cartella dell’account e poi scelgo su quali agire.
gci -force ‘C:\Users\’-ErrorAction SilentlyContinue | Where { !($_.Attributes -match " ReparsePoint") }| ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, ‘{0:N2} GB’ -f ($len / 1Gb)
$sum = $sum + $len}
"Dimensione totale dei profili",'{0:N2} GB' -f ($sum / 1Gb)
Rimozione profili
Una volta scelti i profili utente vecchi o più grandi, che vogliamo cancellare, possiamo usare questo script, dove va inserito manualmente il nome dell’account, rimuove anche quelli aziendali e non solo quelli locali, e vanno aggiunte nuove righe a seconda di quanti account dobbiamo eliminare.
$user = "nome.cognome"
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq $user } | Remove-CimInstance
$user = "nome2.cognome2"
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq $user } | Remove-CimInstance
Teoricamente si potrebbero eliminare anche tutti i profili non più in uso, solo che modificare lo script ogni volta, per inserire 50-60 nomi utente, come mi capita spesso di trovare, diventerebbe un lavoraccio per me, così scelgo i profili più corposi e in pochi minuti recupero tutto lo spazio che mi serve.