Formazione e Tecnologia
Un disco pulito velocizza il lavoro.

Un disco pulito velocizza il lavoro.

Il tema della rimozione dei contenuti superflui dai dischi di Windows è spesso sottovalutato, tuttavia con il passare del tempo si può trasformare in un problema serio, abbiamo affrontato l’argomento del cosa riempie i dischi in un altro articolo e adesso è il momento di fare un passaggio ulteriore verso l’automatizzazione della pulizia di una parte di contenuti superflui.

Da Microsoft Windows 10 è diventato disponibile lo Storage Sense (Sensore di Memoria), uno strumento che opportunamente configurato si occupa di svolgere alcune cancellazioni:

  • file temporanei ed alcuni elementi di sistema residui;
  • file temporanei associati alle applicazioni non utilizzate da tempo;
  • file vecchi dalla cartella Downloads;
  • file di vecchia cancellazione dal cestino.

La configurazione dello Storage Sense dal suo pannello di gestione è semplice ed offre alcune opzioni di intervento; tuttavia, ogni profilo utente del computer ha una propria configurazione, legata alle esigenze del suo utilizzatore.

Configurare lo Storage Sense comporta il collegarsi ad ogni singolo computer e ad ogni utente del computer, per poter applicare la configurazione richiesta, un’operazione lunga e molto noiosa, che implica anche di avere la disponibilità da parte dell’utente di accedere al computer sottostando ai suoi orari.

La disponibilità di un Dominio Active Directory permette di impostare la configurazione di questo elemento utilizzando delle policy; tuttavia, non è un fatto certo che i computer siano collegati ad un dominio e che vi sia l’intenzione di utilizzare le policy; infatti, il nostro Active Directory è l’RMM.

Come sempre, anche queste informazioni di configurazione sono residenti nei registri di sistema, in questo caso in quelli relativi al profilo utente. La presenza delle configurazioni nei registri apre una porta alla possibilità di eseguire le configurazioni senza accedere al desktop del computer interessato.

L’elemento importante e non trascurabile di questo passaggio consiste nel fatto che le modifiche sono immediatamente attive e non richiedono un riavvio.

Tabella dei Contenuti

Cosa controlla lo Storage Sense

La funzionalità permette di attribuire alle diverse attività di pulizia delle soglie temporali, così da evitare la cancellazione arbitraria di contenuti che potrebbero essere ancora utili, anche se contenuti nel cestino.

La funzione di base dello Storage Sense, associata alla sua attivazione (Attiva Sensore di memoria), e che si occupa di rimuovere diversi elementi di sistema, compresi alcuni file temporanei, può essere eseguita in quattro tempi:

  • Ogni giorno;
  • Ogni settimana;
  • Ogni mese;
  • Quando Windows determina che lo spazio disco è insufficiente.

Il secondo elemento è costituito dalla rimozione dei file temporanei che le applicazioni non stanno usando, che equivale ai file temporanei che non sono in uso, questo significa che può cancellare dei contenuti non allocati, ma utilizzati in modo irregolare da un programma, come ad esempio dei dati di sessione relativi ad una comunicazione client-server. Questo elemento non permette di configurare dei tempi di retention dei contenuti.

Il terzo elemento è costituito dalla pulizia del cestino, dove la funzione ha un’impostazione temporale che consente di rimuovere definitivamente solo i file cancellati prima di un certo intervallo, mantenendo i più recenti. Le soglie sono le seguenti:

  • Cancellati da più di un giorno;
  • Cancellati da più di quattordici giorni;
  • Cancellati da più di un mese;
  • Cancellati da più di due mesi.
LEGGI ANCHE -  Il disco è pieno e non sono solo i file temporanei

Per concludere è disponibile la cancellazione dei file della cartella Downloads, anche in questo caso è presente una soglia temporale che consente la rimozione definitiva dei soli contenuti salvati prima di un certo intervallo, mantenendo i più recenti. Le soglie sono le seguenti:

  • Salvati da più di un giorno;
  • Salvati da più di quattordici giorni;
  • Salvati da più di un mese;
  • Salvati da più di due mesi.

La presenza di questo elemento di Windows e la sua semplice configurabilità da remoto ci ha portato a disattivare diverse procedure custom di pulizia, andando ad implementare l’uso del sistema di pulizia integrato di Windows.

Individuare la configurazione dello Storage Sense nei registri di Windows

Il ramo dei registri di Windows dove sono conservate le configurazioni dello Storage Sense è facilmente reperibile con una ricerca in Internet, che ci rimanda a questo percorso:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy

Appare subito evidente che si tratta di un percorso strettamente associato all’utente collegato e non al computer stesso; quindi, ogni utente con accesso al computer può avere una sua specifica configurazione.

È pertanto fondamentale individuare in modo certo il percorso dei registri associato all’ultimo utente collegato, così da poter eseguire le procedure di configurazione con un account diverso da quello dell’utente e senza che questi sia collegato al computer.

Il percorso dei registri su cui operare sarà simile al seguente:

HKEY_USERS\S-1-5-21-2716790531-2692922430-2852089087-1001\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy

Per l’individuazione dell’utente collegato e del suo percorso dei registri rimandiamo ad un precedente articolo.

La struttura della configurazione nei registri

I dati di configurazione dello Storage Sense sono costituiti da sette valori nei registri dell’utente, dove la loro modifica è immediatamente applicata allo strumento di pulizia senza che sia necessario riavviare il computer o compiere altre azioni. I valori specifici sono indicati nel seguito.

Storage Sense nei registri di Microsoft Windows.

Storage Sense nei registri di Microsoft Windows.

Dalla teoria alla pratica

Gli elementi di configurazione dello Storage Sense sono rigidi e strutturati, questo semplifica la loro trasformazione in uno script Powershell eseguibile da parte di un RMM o attraverso dei meccanismi associati agli schedulatori dei computer.

Gli elementi chiave della realizzazione della procedura sono la determinazione del percorso dei registri dell’utente e la compilazione dei valori nei registri.

				
					$USID = Get-AllUSID -FLastUser

if ($null -eq $USID) {
  exit 0
}

				
			

La prima istruzione della procedura individua l’ultimo utente collegato al computer, per farlo utilizza il cmdlet Get-AllUSID, che è una funzione presente in un modulo Powershell da noi realizzato per la gestione delle operazioni sui registri, il metodo adottato per determinare il SID dell’utente è descritta in un precedente articolo.

La condizione alla Riga 3 verifica che sia stato individuato un utente con il relativo SID ed in caso contrario interrompe l’esecuzione della procedura.

				
					$StorageSense = $ENV:StorageSense
$DeleteAnusedFile = $ENV:DeleteAnusedFile
$DeleteRecycleBin = $ENV:DeleteRecycleBin
$DeleteDownloadFolder = $ENV:DeleteDownloadFolder
				
			

La definizione dei valori di configurazione da inserire è un elemento fondamentale, la sintassi rappresentata è quella adottata da Datto RMM, dove per comodità i parametri di configurazione del componente sono definiti come menu di selezione, vincolando in tal modo le scelte. La modalità di passaggio dei parametri di configurazione può essere adattata ad altri prodotti RMM o trasformata nella forma classica utilizzata da Powershell.

				
					if ($StorageSense -notin "1","7","30","0","99") {
  Set-DRMMError -FErrorMessage "ERROR - STORAGESENSE parameter does not consist."
}
if ($DeleteAnusedFile -notin "0","1") {
  Set-DRMMError -FErrorMessage "ERROR - DELETEANUSEDFILE parameter does not consist."
}
if ($DeleteRecycleBin -notin "0","1","14","30","60") {
  Set-DRMMError -FErrorMessage "ERROR - DELETERECYCLEBIN parameter does not consist."
}
if ($DeleteDownloadFolder -notin "0","1","14","30","60") {
  Set-DRMMError -FErrorMessage "ERROR - DELETEDOWNLOADFOLDER parameter does not consist."
}
if ($StorageSense -eq "99" -and ($DeleteAnusedFile -ne 0 -or $DeleteRecycleBin -ne 0 -or $DeleteDownloadFolder -ne 0)) {
  Set-DRMMError -FErrorMessage "ERROR - STORAGESENSE must be on to use one of the other settings."
}

				
			

Agendo sui registri di sistema, anche se di un elemento che non ha modo di danneggiare il sistema, è importante controllare che i parametri di configurazione forniti siano conformi alle specifiche. Le diverse configurazioni sono basate su valori specifici, pertanto le condizioni di verifica controllano che il valore specificato faccia parte di un range di valori predefinito, in caso contrario la procedura viene interrotta con un messaggio di errore. Il cmdlet Set-DRMMError è una funzione customizzata per generare la stringa di errore per Datto RMM, può essere sostituita con altre forme di messaggi in relazione al prodotto usato e al modo di esecuzione usato.

LEGGI ANCHE -  Antivirus di troppo nei monitor del RMM

La condizione della Riga 13 verifica che non venga richiesta la modifica di una delle funzioni senza aver attivato lo Storage Sense.

				
					$Key = "HKU:\" + $USID.SID + "\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy"

New-PSDrive -Name "HKU " -PSProvider Registry -Root "HKEY_USERS" -Confirm:$false

				
			

Alla Riga 1 viene costruito e salvato in una variabile il percorso del registro utente conservato nella sezione HKEY_USERS dei registri. Per poter leggere e scrivere nei percorsi di HKEY_USERS è necessario generare una mount della sezione dei registri, operazione svolta nella Riga 3 con l’ausilio del cmdlet New-PSDrive.

Le configurazioni dei quattro elementi utilizzano l’istruzione Switch, che in questi contesti prediligiamo all’IF.

				
					switch ($StorageSense) {
  "99" { 
      Set-ItemProperty -Path $Key -Name "01" -Value "0" -Force | Out-Null
      Set-ItemProperty -Path $Key -Name "04" -Value "0" -Force | Out-Null
      Set-ItemProperty -Path $Key -Name "08" -Value "0" -Force | Out-Null
      Set-ItemProperty -Path $Key -Name "32" -Value "0" -Force | Out-Null
  }
  Default { # Activate storage sense and its scheduling.
      Set-ItemProperty -Path $Key -Name "01"  -Value "1" -Force | Out-Null
      Set-ItemProperty -Path $Key -Name "2048" -Value $StorageSense -Force | Out-Null
  }
}

				
			

Per la definizione dello stato di funzionamento e dei tempi di intervento dello Storage Sense analizziamo la variabile $StorageSense. Come valore di disattivazione abbiamo adottato il numero 99, la presenza di questo valore determina lo spegnimento dello Storage Sense e di tutti gli elementi di pulizia associati. Per qualsiasi altro valore, tra quelli consentiti, viene impostato ad 1 il valore di attivazione e inserito nel campo 2048 il valore riportato dalla variabile di controllo e corrispondente all’intervallo di tempo tra i controlli.

				
					switch ($DeleteAnusedFile) {
  "0" { # Disable cleaning of temporary application files.
    Set-RegistryValue -FPath $Key -FField "04" -FValue "0"
  }
  "1" { # Enable cleaning of temporary application files.
    Set-RegistryValue -FPath $Key -FField "04" -FValue "1"
  }
}
				
			

La cancellazione dei file temporanei non utilizzati dalle applicazioni prevede solo lo stato di acceso e spento, in questo caso l’istruzione Switch controlla il contenuto della variabile $DeleteAnusedFile andando a modificare di conseguenza il campo 04 dei registri.

				
					switch ($DeleteRecycleBin) {
  "0" { # Disable trash cleaning and reset the configuration.
    Set-RegistryValue -FPath $Key -FField "08" -FValue "0"
    Set-RegistryValue -FPath $Key -FField "256" -FValue "0"
  }
  Default { # Activate the trash cleaning and configure the retention time.
    Set-RegistryValue -FPath $Key -FField "08" -FValue "1"
    Set-RegistryValue -FPath $Key -FField "256" -FValue $DeleteRecycleBin
  }
}

				
			

Per la definizione dello stato di funzionamento e dei tempi di intervento della pulizia del Cestino analizziamo la variabile $DeleteRecycleBin. La valorizzazione a zero determina lo spegnimento della funzione e l’azzeramento dei tempi di retention. Per qualsiasi altro valore della variabile viene attivata la funzione e impostato il campo 256 con il valore contenuto nella variabile, che corrisponde al tempo di retention.

LEGGI ANCHE -  Powershell e SSH per potenziare l'RMM e non solo
				
					switch ($DeleteDownloadFolder) {
  "0" { # Disable the cleaning of the Downloads folder and reset the configuration.
    Set-RegistryValue -FPath $Key -FField "32" -FValue "0"
    Set-RegistryValue -FPath $Key -FField "512" -FValue "0"
  }
  Default { # Activate the cleanup of the Downloads folder and set the retention time.
    Set-RegistryValue -FPath $Key -FField "32" -FValue "1"
    Set-RegistryValue -FPath $Key -FField "512" -FValue $DeleteDownloadFolder
  }
}

Remove-PSDrive -Name "HKU " -Force -Confirm:$false
				
			

Per la definizione dello stato di funzionamento e dei tempi di intervento della pulizia della cartella Downloads analizziamo la variabile $DeleteDownloadFolder. La valorizzazione a zero determina lo spegnimento della funzione e l’azzeramento dei tempi di retention. Per qualsiasi altro valore della variabile viene attivata la funzione e impostato il campo 512 con il valore contenuto nella variabile, che corrisponde al tempo di retention.

Per concludere, alla Riga 12, viene rimossa la mount del percorso dei registri su cui si è operato.

Concludendo

Con una procedura, solo apparentemente complessa, possiamo configurare un componente di Microsoft Windows per gestire al meglio la pulizia dei dischi, delegando al sistema operativo delle operazioni scomode da eseguire.

La possibilità di eseguire la configurazione da remoto rende possibile apportare le modifiche necessarie molto velocemente, andando nel caso ad attivare o disattivare alcune funzionalità senza dover disturbare l’utilizzatore del computer, con benefici per tutte le parti coinvolte.

La possibilità di assegnare la gestione della procedura ad un RMM consente di mandarla in esecuzione contemporaneamente su più computer aggregati sulla base del tipo di configurazione richiesta.

Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.

I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.

I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.

Archivi
Prossimi eventi

Non ci sono eventi imminenti.

Iscriviti alla nostra Newsletter
Seleziona lista (o più di una):
Manteniamo i tuoi dati privati e NON li condividiamo con terze parti. Per maggiori informazioni, consulta la nostra Privacy Policy.
Confermo di aver letto la Policy sul trattamento dei dati
Il misticismo della Tuscia e le curatrici

Un progetto parallelo ambientato nella Tuscia Sutrina: piante da giardino locali, tecniche di coltivazione, storia e leggende del territorio, racconti fantasy a tema. Botanica, cultura e tradizioni in un unico spazio.

A volte basta una breve pausa per ritrovare la concentrazione: qualche minuto tra verde e fantasia può aiutare a tornare al lavoro con nuove idee.

Visita il sito