21123 Letture

Trovare i file che occupano spazio su disco con PowerShell

Per trovare i file che occupano spazio sul disco fisso non è indispensabile orientarsi su applicazioni sviluppate da terze parti (vi suggeriamo, ad esempio, la lettura dei seguenti nostri articoli: "Quali file e cartelle occupano maggiore spazio su disco?", "DriveSpacio: quali sono i software che occupano più spazio?", "Verificare i file e le cartelle che occupano più spazio su disco).
Gli utenti di Windows 7 troveranno preinstallato sul proprio sistema, infatti, un potente strumento che si rivela di grande utilità per la gestione di file e cartelle.

PowerShell è un eccellente software, basato sul framework .Net di Microsoft e sulla programmazione ad oggetti, che offre la possibilità di interagire non solo con il file system (quindi i file e le cartelle presenti nelle varie unità di memorizzazione) ma anche di lavorare con altri tipo di strutture dati (ad esempio, PowerShell è capace di accedere e manipolare il contenuto del registro di sistema di Windows).


Nel nostro caso, però, ci limiteremo ad utilizzare PowerShell per trovare i file che occupano spazio sul disco fisso.

Oltre ad un'interfaccia a riga di comando, dallo sfondo di colore blu, PowerShell mette a disposizione una comoda IDE ("Integrated Development Environment") che consta di una pratica interfaccia grafica.

Per avviare l'IDE di PowerShell da Windows 7, è sufficiente cliccare sul pulsante Start, digitare Windows PowerShell nella casella Cerca programmi e file quindi cliccare su Windows PowerShell IDE:

Dopo alcuni secondi di attesa, ci si troverà dinanzi ad un ambiente di sviluppo come quello rappresentato in figura:

Per trovare i file che hanno una dimensione superiore a quella stabilita, è sufficiente incollare, nel riquadro superiore, quanto segue:

Get-ChildItem -path C:\ -recurse | where {$_.length -ge 100MB}


In questo caso, PowerShell andrà alla ricerca di tutti quei file, memorizzati nel disco C: ed in tutte le sue sottocartelle, che hanno dimensioni superiori a 100 MB.

Per avviare lo script, basterà fare clic sul pulsante evidenziato in figura (oppure premere il tasto F5):

PowerShell è dotato di un apposito "convertitore" che provvede a trattare adeguatamente l'unità di misura specificata: è quindi possibile usare, senza problemi, KB, MB o GB.

PowerShell restituisce un errore quando tenta di accedere alle cartelle di sistema senza utilizzare i diritti di amministratore (esempio: Get-ChildItem : Accesso al percorso 'C:\PerfLogs' negato.):

Qualora si volesse ovviare a questo problema, basterà eseguire PowerShell con i diritti di amministratore. Dopo aver digitato Windows PowerShell nella casella Cerca programmi e file di Windows 7, basterà fare clic con il tasto destro del mouse su Windows PowerShell IDE quindi scegliere il comando Esegui come amministratore.

Se, nella barra degli strumenti di PowerShell IDE, viene visualizzato il pulsante con un quadrato rosso, significa che lo script non ha ancora completato il suo lavoro:

L'area centrale della finestra di PowerShell verrà utilizzata per mostrare il responso dello script via a via che esso sarà prodotto. Non appena lo script avrà individuato i file che occupano più spazio sul disco, si potrà copiare l'output di PowerShell cliccando con il tasto sinistro del mouse nell'area centrale, utilizzando la combinazione di tasti CTRL+A per selezionare tutto il testo e, quindi, CTRL+C per memorizzarlo negli Appunti di Windows. Per copiare altrove le informazioni (ad esempio, in un qualunque editor di testo), basterà usare CTRL+V.


Qualora si volesse salvare l'elenco dei file che occupano più spazio sul disco in un foglio elettronico apribile con Excel o LibreOffice Calc, basterà utilizzare la sintassi seguente:
Get-ChildItem -path C:\ -recurse | where {$_.length -ge 100MB} | Select FullName, {$_.length / 1MB} | Export-Csv -Path C:\Users\Michele\output.csv

L'istruzione Select FullName, {$_.length / 1MB} permette di estrapolare, dalle proprietà del file, esclusivamente il nome completo (nome del file e percorso assoluto) e dimensioni (il numero di bytes viene automaticamente diviso per un milione in modo da ottenere il numero di Megabytes complessivi).

Al posto del percorso C:\Users\Michele\output.csv dev'essere specificato il foglio elettronico all'interno del quale si desidera memorizzare le informazioni.


  1. Avatar
    Michele Nasi
    11/06/2012 19:25:10
    Assicurati di utilizzare la sintassi corretta, come esplicitato anche nelle immagini a corredo dell'articolo. Riponi particolare attenzione al carattere | ("pipe").
  2. Avatar
    Madmario
    11/06/2012 17:54:32
    Ciao, ha me da questo errore: Get-ChildItem : Impossibile convertire 'System.Object' nel tipo 'System.String' richie sto da parametro 'Filter'. Specificato metodo non supportato. In riga:1 car:14 + Get-ChildItem <<<< -path C:\ -recurse , where {$_.length -ge 100MB} + CategoryInfo : InvalidArgument: (:) , ParameterBindingExc eption + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetCh ildItemCommand
Trovare i file che occupano spazio su disco con PowerShell - IlSoftware.it