Come pulire i file temporanei con PowerShell e automatizzare la pulizia in Windows

Ultimo aggiornamento: 22/02/2026
Autore: Isaac
  • PowerShell consente di pulire in modo nativo file temporanei, registri e vecchi dati, evitando applicazioni di terze parti inaffidabili.
  • Cmdlet come Get-ChildItem, Clear-Content e Remove-Item semplificano l'eliminazione di elementi in base a data, dimensione, attributi o percorsi specifici, con un controllo ottimale.
  • Parametri quali -WhatIf, -Confirm, -Force e -Recurse aiutano ad automatizzare le pulizie di massa, mantenendo al contempo la sicurezza ed evitando errori gravi.
  • La combinazione di script pianificati e best practice rende PowerShell uno strumento fondamentale per la manutenzione ordinaria di Windows.

Pulisci i file temporanei con PowerShell

Se lavori quotidianamente con Windows, prima o poi ti ritroverai con un disco rigido pieno di File temporanei, registri e residui di applicazioni che ora sono inutili. Molti amministratori di sistema si affidano a programmi di terze parti pieni di pubblicità, ma la realtà è che con PowerShell è possibile automatizzare quasi tutta questa pulizia senza installare nulla di extra.

Inoltre, PowerShell ti consente di fare un ulteriore passo avanti: non solo eliminare i file temporanei, ma anche Elimina i vecchi file in base alla loro data, cancella il contenuto con Clear-Content e usa Remove-Item per gestire file, cartelle, chiavi di registro e altro ancora. Tutto questo con la possibilità di testare prima con -WhatIf, richiedere conferma e pianificare attività ricorrenti per dimenticare la manutenzione manuale.

Perché pulire i file temporanei con PowerShell

L'utilizzo di PowerShell per queste attività di manutenzione presenta un vantaggio evidente: Sfrutti gli strumenti nativi di Windows ed eviti software di dubbia affidabilità. che può portare con sé adware, telemetria aggressiva o persino malware. Se sei già stanco di eseguire manualmente i programmi di pulizia della grafica, automatizzare il processo con gli script è praticamente un must.

Ci sono amministratori che hanno creato le proprie utilità homebrew che semplicemente orchestrare cmdlet e strumenti integrati Invece di reinventare la ruota, l'idea è chiara: se il sistema include già tutto il necessario per eliminare file temporanei, vecchi log o dati residui, la cosa logica da fare è partire da lì e impacchettarlo in uno o più script riutilizzabili.

Questo approccio non è limitato ai tipici file temporanei degli utenti. Con PowerShell puoi Pulisci le directory che si riempiono rapidamente, come le cartelle di swap, i registri o i vecchi backup., applicando criteri quali data di creazione, data di modifica, dimensione o attributi speciali (nascosto, di sola lettura, ecc.).

Un altro grande vantaggio è che tutti questi comandi possono essere eseguire senza supervisione attività pianificate. Ad esempio, puoi programmare una pulizia notturna delle acque piovane, un altro settimanale per i vecchi record e un altro mensile per i backup obsoleti, tutti con alcuni script ben congegnati.

Elimina i vecchi file con Get-ChildItem e Remove-Item

Uno degli scenari di pulizia più comuni è quando è necessario eliminare i file più vecchi di una certa etàImmagina una cartella di registri, driver, backup o qualsiasi directory in cui si accumulano file che raramente controlli, ma che occupano gigabyte e gigabyte.

La combinazione classica per questo tipo di lavoro è quella di utilizzare Get-ChildItem per elencare, Where-Object per filtrare per data e Remove-Item per eliminareLo schema di base sarebbe più o meno questo (espresso in altre parole per renderlo più chiaro):

Get-ChildItem -Path « » -Ricorsione | Dove-Oggetto Ora di creazione -LT (Ottieni-Data).AddDays(- ) | Rimuovi-elemento

In questo comando, la stringa immessa in contrassegna la directory da esplorare e il valore numerico di Definisci quanti giorni indietro vuoi cercare. Qualsiasi file la cui data di creazione è precedente a quel riferimento viene inviato direttamente a Remove-Item per l'eliminazione.

Ad esempio, se nella cartella C:\Driver\lj368\ Se si desidera eliminare file più vecchi di una settimana, la procedura è la seguente:

Get-ChildItem -Path «C:\Drivers\lj368\» -Recurse | Where-Object CreationTime -LT (Get-Date).AddDays(-7) | Remove-Item

Questo tipo di comando è molto flessibile, perché Puoi sostituire Remove-Item con altre azioni Se preferisci controllare prima cosa stai per eliminare, puoi, ad esempio, visualizzare i file sullo schermo, salvarli in un file CSV per verificarli o spostarli in un'altra cartella invece di eliminarli direttamente.

Se tutto ciò che ti interessa è eseguire la pulizia senza impantanarti in spiegazioni, usa semplicemente lo stesso schema a una riga. cambiando il percorso e il numero di giorni e avviandolo da una console PowerShell con le autorizzazioni appropriate.

Clear-Content: svuota i file senza eliminarli

In alcuni scenari non si desidera eliminare il file, ma rimuovere il suo contenuto e lasciare il file vuotoEcco a cosa serve il cmdlet Clear-Content: agisce sul contenuto di un elemento, mentre l'elemento (file, flusso, ecc.) continua a esistere.

La sintassi generale consente entrambi -Percorso come -LiteralPath e può essere utilizzato con il provider del file system e altri provider PowerShell che gestiscono i contenuti. Esempio tipico per i file di testo:

  Con quale frequenza dovresti riavviare Windows 11 e perché è così importante?

Clear-Content -Path «..\SmpUsers\*\init.txt»

Questo comando cancella il contenuto di tutti i file init.txt situato nelle sottodirectory SmpUsersI file sono ancora presenti, ma senza testo al loro interno. Questa è la soluzione perfetta se si desidera preservare la struttura dei file ma lasciare vuoti alcuni file di configurazione o modelli.

È inoltre possibile combinare Clear-Content con parametri quali -Filtro, -Includi e -Escludi per definire quali file sono interessati. Un esempio tradizionale di cancellazione dei record senza eliminare il file sarebbe:

Clear-Content -Path «*» -Filter «*.log» -Force

Qui viene svuotato il contenuto di tutti i file con estensione .log nella directory corrente. compresi quelli di sola lettura grazie a -ForceÈ più efficiente utilizzare `-Filter` piuttosto che inserire *.log direttamente in `-Path`, poiché il filtraggio viene eseguito a livello di provider. Per maggiori dettagli su come trattare gli attributi come di sola lettura, vedere [link alla documentazione pertinente]. comandi per la gestione degli attributi dei file.

Clear-Content è anche in grado di lavorare con flussi di dati alternativi Sui file system NTFS. È possibile, ad esempio, eliminare il contenuto di un flusso Zone.Identifier associato a uno script scaricato, mantenendo il flusso vuoto, sebbene per sbloccare i file da Internet si consiglia di utilizzare Unblock-File.

Parametri chiave di Clear-Content

Clear-Content supporta una serie di parametri di cui dovresti essere a conoscenza per evitare sorprese. Uno dei più importanti è -Conferma, che obbliga PowerShell a chiedere conferma. prima di eseguire l'operazione, utile quando si svuotano molti file contemporaneamente.

Parametro -Credenziali Consente di eseguire l'operazione con credenziali diverse, il che è utile in ambienti in cui si manipolano file su risorse di rete o percorsi in cui l'utente corrente non dispone di autorizzazioni dirette. Analogamente, i parametri -Includi e -Escludi Accettano modelli jolly per includere o escludere file in base al loro nome.

Un altro parametro rilevante è -Percorso letteraleche tratta il percorso esattamente come lo digiti, senza interpretare i caratteri jolly. È ideale quando si lavora con Nomi che contengono parentesi, asterischi o altri simboli speciali che potrebbero essere confusi con i jolly.

Parametro -Flusso In Windows, questo comando viene utilizzato per specificare il flusso di dati alternativo che si desidera manipolare. Ciò consente, ad esempio, di svuotare un ADS specifico senza alterare il contenuto del file principale.

Infine, puoi usare -WhatIf se vuoi vedere cosa succederebbe senza effettivamente eseguire l'azione. È una risorsa che dovresti quasi automaticamente considerare quando testi script di pulizia in ambienti sensibili.

Remove-Item: il cmdlet per eliminare file, cartelle e altro

Quando parliamo di pulizia con PowerShell, la star assoluta è Remove-Item, il cmdlet responsabile della rimozione degli elementiSebbene sia più comunemente utilizzato con file e directory, il suo ambito è più ampio: funziona anche con chiavi di registro, voci di archivio certificati, variabili di ambiente e altri provider.

Una cosa importante da chiarire è che, per impostazione predefinita, Rimuovi-elemento elimina definitivamenteNon invia file al Cestino, quindi se si commette un errore, probabilmente non si può tornare indietro. Ecco perché è essenziale affidarsi a parametri come -WhatIf e -Confirm.

Tra i casi d'uso più comuni ci sono attività come pulire i file temporanei, eliminare i vecchi backup, eliminare i vecchi registri o rimuovere le directory vuoteÈ fondamentale anche negli script di distribuzione, dove spesso è necessario eliminare le versioni precedenti di un'applicazione prima di installare quella nuova. Se gestisci i backup, considera automatizzare i backup prima dell'eliminazione di massa.

Remove-Item accetta input da altri cmdlet tramite la pipeline, consentendo Crea comandi molto potenti combinandoli con Get-ChildItem, Where-Object e altri filtri.Ciò si adatta perfettamente all'esempio precedente dell'eliminazione dei file in base alla loro età o dimensione.

La sintassi di base consente di specificare uno o più percorsi con -Path, utilizzare caratteri jolly e aggiungere -Ricorrenza in modo che l'eliminazione venga applicata ricorsivamente Per quanto riguarda le sottocartelle, è anche possibile specificare -Force per gestire i file nascosti o di sola lettura.

Percorsi, caratteri jolly e inclusione/esclusione di file

Per lavorare comodamente con Remove-Item, è utile sapere come Ottieni il percorso completo dei file e delle cartelle da Esplora fileBasta andare alla cartella in questione, cliccare nella barra degli indirizzi, copiare il percorso e, se si tratta di un file specifico, aggiungere il nome del file e la sua estensione alla fine. Se hai bisogno di ottimizzare l'interazione con il sistema, potresti essere interessato a come migliorare Browser dei file.

  Utilizzo avanzato di Get-WinEvent e WEF per l'audit e la sicurezza

Quando si desidera eliminare un file specifico, la sintassi tipica è quella di utilizzare Rimuovi-elemento -Percorso «C:\Percorso\file.ext»Per una cartella specifica, ti basterà specificarne il percorso e, se vuoi che scompaia insieme a tutto il suo contenuto, dovrai aggiungere il parametro -Recurse in modo che elimini anche le sottocartelle e i file interni.

Se vuoi eliminare più file dello stesso tipo in blocco, puoi Utilizzare i caratteri jolly con l'estensione, ad esempio *.txtIn questo caso, Remove-Item interpreterà l'asterisco come una qualsiasi stringa di caratteri ed eliminerà tutti i file che corrispondono al modello.

Quando si gestiscono più tipi di file (ad esempio, .txt e .log) nella stessa directory, il modo più comodo è utilizzare Get-ChildItem con filtri e quindi reindirizzamento a Remove-Item, invece di provare a passare troppi modelli direttamente in -Path, che non supporta la loro combinazione in modo così flessibile.

Parametri -Include e -Exclude sono molto pratici Se si desidera essere selettivi, è possibile dire "elimina tutto tranne i file .txt" o "elimina solo i file .log" con espressioni semplici. In combinazione con -Recurse e percorsi ben definiti, questo offre un controllo piuttosto preciso sulla pulizia.

File speciali, attributi e flussi alternativi

Nella vita reale, non tutto è un file normale. Spesso ci si imbatte in file... contrassegnati come di sola lettura, nascosti, di sistema o con nomi strani pieni di caratteri specialiIn questi casi, Remove-Item offre opzioni specifiche.

Per gestire elementi nascosti o di sola lettura, è importante utilizzare il parametro -Forza, che forza l'operazione se le autorizzazioni lo consentono. Senza `-Force`, molti di questi file semplicemente non verranno eliminati e verranno visualizzati degli errori nella console. Se è necessario visualizzare o manipolare File nascostiRicordarsi di attivare la visualizzazione prima di eseguire eliminazioni in blocco.

Se il nome del file contiene spazi o caratteri come &, $, parentesi o parentesi quadre, è meglio racchiudere il percorso tra virgolette singole in modo che PowerShell non tenti di interpretare tali simboli come caratteri jolly o variabili. In caso di dubbio, è anche possibile utilizzare caratteri jolly parziali per individuare il file.

Un'altra particolarità di NTFS è la Flussi di dati alternativi Possono essere utilizzati per memorizzare informazioni aggiuntive in un file. Questo può essere utilizzato legittimamente, ma anche per nascondere dati. Per identificarli, è possibile utilizzare Get-ChildItem con il parametro -Stream e vedere quali flussi aggiuntivi contiene un file.

Una volta identificato l'ADS che vuoi rimuovere, puoi richiamare Remove-Item specificando il percorso con il nome del flusso, qualcosa come "file.txt:hiddenstream"In questo modo si elimina il flusso alternativo senza incidere sul contenuto del file principale, il che è utile se si sospetta la presenza di dati nascosti o se si desidera semplicemente pulire i metadati.

Tieni presente che queste operazioni sono irreversibili, quindi è consigliabile combinarli con test e backup precedenti se stai lavorando su sistemi sensibili o con informazioni importanti.

Elimina in base a condizioni: data, dimensione e attributi

PowerShell brilla soprattutto quando ne hai bisogno eliminazione di file in base a condizioni complesseNon si tratta solo di pulire i file temporanei, ma di applicare regole come "più vecchi di X giorni", "più grandi di X dimensioni" o "con determinati attributi".

Per eliminare i vecchi file, di solito si usa Get-ChildItem per elencare, seguito da Where-Object per filtrare per dataAd esempio, facendo riferimento alla proprietà LastWriteTime. Quindi, l'output viene inoltrato a Remove-Item per completare la pulizia.

La stessa tecnica funziona per la pulizia in base alle dimensioni: si ottengono tutti i file nella directory, Si filtra con Where-Object confrontando la proprietà Length con una soglia. (in byte) e passare i risultati a Remove-Item. Prima di eseguire l'eliminazione, si consiglia di saltare temporaneamente la parte Remove-Item per visualizzare l'elenco dei file interessati.

È anche possibile filtrare per attributi, come sola lettura o nascosto, utilizzando la proprietà Attributi in Where-Object o il parametro -Attributes direttamente in Get-ChildItem. In questo modo selezioni solo i file che soddisfano quei criteri e poi li elimini in blocco.

Per individuare ed eliminare cartelle vuote, è comune utilizzare Get-ChildItem con l'opzione directories, contare gli elementi in ogni cartella e, se non contiene nulla, reindirizza l'elenco a Remove-Item -ForcePrima di procedere all'eliminazione, è prassi comune utilizzare Select-Object FullName per verificare quali directory verranno eliminate.

  Risolvi i problemi di configurazione più comuni in OBS Studio

In tutti questi scenari è una buona idea usare -WhatIf per simulare l'azione e assicurati di non combinare nulla di indesiderato, soprattutto se ti trovi su un server di produzione o su un percorso condiviso.

Migliori pratiche, sicurezza e gestione degli errori

Lavorare con comandi che eliminano file non è mai innocuo, quindi è consigliabile seguire una serie di precauzioni. migliori pratiche per minimizzare i rischiIl primo è quasi obbligatorio: testare sempre i comandi con -WhatIf quando si sviluppa o si modifica uno script di pulizia.

Quando il rischio è elevato o i dati sono critici, è possibile incorporare il parametro - Confermare in modo che PowerShell stesso richieda conferma. a ogni eliminazione. È più macchinoso, ma può farti risparmiare un sacco di problemi se hai aggiunto accidentalmente il percorso sbagliato.

Un altro consiglio è quello di lavorare sempre con percorsi completi e molto esplicitiEvitate il più possibile i caratteri jolly ai livelli più alti dell'albero delle directory. Più specifico è il percorso, minore è la probabilità di eliminare accidentalmente elementi che non dovreste eliminare.

È anche utile capire come gestire errori come "Accesso negato" e "File non trovato"Il primo indica solitamente autorizzazioni insufficienti, quindi potrebbe essere necessario eseguire PowerShell come amministratore o modificare le autorizzazioni con Set-Acl. Il secondo indica percorsi errati o file che non esistono più.

Negli script automatizzati, è comune gestire questi errori utilizzando -ErrorAction, blocchi try/catch e persino Test-Path Per verificare se un file o una cartella esiste prima di tentare di eliminarli. Se, nella tua logica, non è fondamentale che una risorsa sia già scomparsa, puoi usare `-ErrorAction SilentlyContinue` per evitare rumore di fondo inutile.

Non dimenticare i backup: quando l'eliminazione riguarda molti file o dati sensibili, Assicurati di avere un backup recenteE se intendi apportare modifiche agli script di pulizia critici, testali prima in un ambiente di test non di produzione.

Esempi pratici di pulizia con PowerShell e CMD

Oltre alla teoria, è molto utile averla a portata di mano alcuni esempi concreti che puoi adattare al tuo ambiente. Un metodo molto semplice, anche se si utilizzano i comandi classici di Windows invece di PowerShell, sarebbe quello di pulire la cartella temporanea dell'utente, svuotare la cartella Download e svuotare il Cestino:

del /q/s %temp%\*
del /q/s %USERPROFILE%\downloads\*
PowerShell.exe -NoProfile -Command Clear-RecycleBin -Confirm:$false

Il primo comando cancella tutti i file nella directory temporanea dell'utenteIl secondo comando fa lo stesso con la cartella Download, mentre il terzo richiama PowerShell per svuotare il Cestino senza chiedere conferma. È una rapida combinazione per recuperare una quantità significativa di spazio su molti computer.

Se desideri qualcosa di più raffinato e interamente in PowerShell, potresti adattare ciò che abbiamo visto prima a Pulisci i file temporanei da una cartella specifica con Remove-ItemAd esempio, in C:\Temp, aggiungere -WhatIf per visualizzare la simulazione prima di eseguirla effettivamente.

Un altro tipico esempio del mondo reale è archiviare ed eliminare i vecchi registriInnanzitutto, dovresti spostare i log più vecchi di 30 giorni in una cartella di archivio, quindi eliminare quelli più vecchi, ad esempio, di 90 giorni dalla stessa cartella di archivio. In questo modo, manterrai una cronologia ragionevole senza riempire troppo il disco.

Tutti questi esempi possono essere pianificati utilizzando l'Utilità di pianificazione di Windows, in modo che Le pulizie vengono eseguite automaticamente nel momento e con la frequenza che decidi tu, senza intervento manuale e con la tranquillità di aver testato in precedenza i comandi con -WhatIf.

Infine, combina cmdlet come Get-ChildItem, Clear-Content e Remove-Item con filtri, condizioni e best practice Fornisce una serie di strumenti molto potenti per tenere sotto controllo file temporanei, registri obsoleti, cartelle vuote e altri detriti che si accumulano con l'uso quotidiano, ottenendo un sistema più leggero, ordinato e facile da gestire a lungo termine.

Pianifica la pulizia dei file temporanei in Windows 11-8
Articolo correlato:
Come pianificare la pulizia automatica dei file temporanei in Windows 11