Große Dateien mit der Windows PowerShell auffinden und übersichtlich darstellen

Wo wird der Speicherplatz verbraucht - Auflisten von großen Dateien mit der Windows PowerShell

Oft sammelt sich auf dem Windows System Unmengen an großen Daten an. Vor allem, wenn man z.B. noch zusätzlich darauf virtualisiert und entsprechend viele ISO Dateien oder virtuelle Maschinen auf dem PC hat. Jetzt kann man natürlich zum einen den Windows Explorer verwenden, um großen Daten ausfindig zu machen. Wie das geht, könnt ihr im Artikel:  Mit dem Windows Explorer Dateien mit einer bestimmten Größe suchen – Mehr Suchkriterien verwenden, nachlesen. In diesem Tutorial aber möchte ich euch zeigen, wie man dafür die Windows PowerShell verwenden kann.

Wie üblich bietet diese wiederum wesentlich mehr Möglichkeiten als der Windows Explorer. So könnte man z.B. die Daten direkt verschieben oder löschen. Als Erstes wählt man den Pfad, in welchem nach großen Daten gesucht werden soll. Anschließend lässt man sich alle großen Daten absteigend auflisten. Ausgegeben werden soll dabei jeweils der Dateiname sowie dessen Länge. Sofern man den kompletten Verzeichnisbaum durchsuchen möchten, benötigt man den Parameter Recurse (Reskursiv).

# Pfad festlegen
 Set-Location C:\Users\markus\Documents

# Auflisten der 20 größten Dateien
 get-childitem -Recurse | Sort-Object -Descending -Property length | Select -First 20 name, length

Diese Ausgabe ist allerdings nicht gerade sehr schön, weil die Dateigröße in Bytes angezeigt wird. Besser ist es, wenn man die Größe in Megabyte oder Gigabyte angibt. Auch das ist mit der Windows Powershell einfach möglich. Hierfür benötigt man lediglich die Math::round() Funktion. Für einen schöneren Überblick, wurde noch der Namen auf die jeweilige Einheit angepasst. Im folgendem Beispiel eben auf Megabytes.

 get-childitem -Recurse | Sort-Object -Descending -Property length | Select -First 20 name, @{Name="Megabytes";Expression={[Math]::round($_.length / 1MB, 2)}}
Große Dateien mit der Windows Powershell auflisten lassen
Große Dateien mit der Windows Powershell auflisten lassen
Das kleine Script könnte natürlich noch beliebig erweitert werden. Eine schönere Ausgabe erhält man z.B. mit dem Cmdlet Out-GridView. Dabei wird ein eigenes Fenster geöffnet und die Ergebnisse darin schön dargestellt. Zusätzlich kann vielleicht auch noch das Datum des letzten Zugriffes sehr interessant sein. Hierzu bedient man sich dem Parameter LastWriteTime.
# Pfad festlegen
Set-Location C:\Users\markus\Documents

# Auflisten der 20 größten Dateien
get-childitem -Recurse | Sort-Object -Descending -Property length | Select -First 20 LastWriteTime,name,

@{Name="Megabytes";Expression={[Math]::round($_.length / 1MB, 2)}} | Out-GridView
Mit der Windows Powershell große Dateien auflisten - Out-GridView
Mit der Windows Powershell große Dateien auflisten – Out-GridView

Zusätzlich könnte man das Script noch soweit erweitern, dass der Benutzer nach dem Pfad gefragt wird, in welchem nach großen Dateien gesucht werden soll. Die Abfrage erfolgt dabei mit Read-Host. Das Ergebnis wird anschließend in eine Variable gespeichert und dem Cmdlet Set-Location übergeben.

#Pfad abfragen
$pfad = Read-Host -prompt "Wo wollen Sie nach großen Dateien suchen"

# Pfad festlegen
Set-Location $pfad

Das fertig PowerShell Script könnt ihr euch auch hier direkt Downloaden. Es muss lediglich noch entpackt werden.

Große-Dateien-auflisten.zip