Jak sprawdzić rozmiar folderów na dysku za pomocą PowerShell

Większość użytkowników systemu Windows jest przyzwyczajona, że ​​najłatwiejszym sposobem uzyskania rozmiaru folderu jest otwarcie jego właściwości w Eksploratorze Windows. Bardziej doświadczeni wolą używać narzędzi takich jak TreeSize lub WinDirStat. Ale jeśli chcesz uzyskać bardziej szczegółowe statystyki dotyczące rozmiaru folderów w określonym katalogu lub wykluczyć niektóre typy plików, w takim przypadku lepiej jest użyć funkcji PowerShell. W tym artykule pokażemy, jak szybko uzyskać rozmiar określonego katalogu na dysku (lub wszystkich podkatalogach) za pomocą PowerShell.

Wskazówka. Możesz także użyć narzędzia konsoli du.exe, aby uzyskać rozmiar określonego folderu na dysku..

Za pomocą poleceń można uzyskać rozmiary plików i katalogów w programie PowerShell. Get-childitem (alias gci) i Zmierz obiekt (miara aliasu).

Pierwsze polecenie cmdlet umożliwia utworzenie listy plików w określonym katalogu zgodnie z określonymi kryteriami, a drugie wykonuje arytmetykę.

Wskazówka. W jednym z naszych poprzednich artykułów pokazaliśmy, jak używać polecenia cmdlet Get-ChildItem do znajdowania TOP największych plików na dysku..

Na przykład, aby uzyskać rozmiar folderu c: \ ps, uruchom polecenie:

Get-ChildItem c: \ iso | Zmierz obiekt - długość właściwości - suma

Jak widać, całkowity rozmiar plików w tym katalogu jest wskazany w polu Suma i wynosi około 2 GB (rozmiar w bajtach).

Aby przekonwertować rozmiar na wygodniejszy MB lub GB, użyj następującego polecenia:

(gci c: \ iso | Measure Length -s) .sum / 1Gb

Lub:

(gci c: \ iso | Measure Length -s) .sum / 1Mb

Aby zaokrąglić wynik do dwóch miejsc po przecinku, uruchom polecenie:

„0: N2 GB” -f ((gci c: \ iso | Measure Length -s) .sum / 1Gb)

Aby obliczyć całkowity rozmiar wszystkich plików określonego typu w katalogu, użyj następującego polecenia (na przykład chcemy uzyskać całkowity rozmiar plików ISO w folderze):

(gci c: \ iso * .iso | Measure Length -s) .sum / 1Mb

Powyższe polecenia pozwalają uzyskać tylko całkowity rozmiar pliku w określonym katalogu. Jeśli folder zawiera podkatalogi, rozmiar plików w tych katalogach nie będzie brany pod uwagę. Aby uzyskać całkowity rozmiar wszystkich plików w katalogu, biorąc pod uwagę podkatalogi, musisz użyć parametru -Powtórz. Uzyskaj łączny rozmiar wszystkich plików w folderze c: \ Windows.

„0: N2 GB” -f ((gci -force c: \ Windows -Recurse -ErrorAction SilentlyContinue | Measure Length -s) .sum / 1Gb)

Aby uwzględnić rozmiar plików ukrytych i systemowych, dodatkowo podałem argument -siła.

Rozmiar katalogu C: \ Windows na naszym dysku wynosi około 16 GB.

Wskazówka. Aby nie wyświetlać błędów dostępu do katalogu, użyj parametru -ErrorAction SilentlyContinue.

Możesz uzyskać rozmiar wszystkich podfolderów pierwszego poziomu w określonym katalogu. Na przykład musimy uzyskać rozmiar wszystkich profili użytkowników w folderze C: \ users.

gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. pełna nazwa -ErrorAction SilentlyContinue | % $ len + = $ _. długość
$ _. pełna nazwa, „0: N2 GB” -f ($ len / 1Gb)

% - to jest alias dla pętli foreach-obiekt.

Śmiało Załóżmy, że Twoim zadaniem jest ustalenie rozmiaru każdego katalogu w katalogu głównym systemowego dysku twardego i przedstawienie informacji w formie tabeli, wygodnej do analizy, z możliwością sortowania według rozmiaru katalogów. Aby to zrobić, użyj polecenia cmdlet Out-GridView.

Aby uzyskać informacje o rozmiarze katalogów na dysku C: \, uruchom następujący skrypt PowerShell:

$ targetfolder = 'C: \'
$ dataColl = @ ()
gci -force $ targetfolder -ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. pełna nazwa -ErrorAction SilentlyContinue | % $ len + = $ _. długość
$ foldername = $ _. pełna nazwa
$ foldersize = '0: N2' -f ($ len / 1Gb)
$ dataObject = PSObject nowego obiektu
Add-Member -inputObject $ dataObject -memberType NoteProperty -nazwa „foldername” -value $ foldername
Add-Member -inputObject $ dataObject -memberType NoteProperty -name „folderizeGb” -wartość $ folderize
$ dataColl + = $ dataObject

$ dataColl | Out-GridView -Title „Rozmiar podkatalogu”

Jak widzisz, powinieneś zobaczyć graficzną reprezentację tabeli, w której wskazane są wszystkie foldery w katalogu głównym dysku systemowego C: \ i ich rozmiar. Klikając nagłówek kolumny tabeli, możesz sortować foldery według rozmiaru.