Jak zjistit velikost složek na disku pomocí PowerShell

Většina uživatelů Windows je zvyklá, že nejsnadnějším způsobem, jak získat velikost složky, je otevřít její vlastnosti v Průzkumníkovi Windows. Zkušenější upřednostňují použití nástrojů jako je TreeSize nebo WinDirStat. Pokud však potřebujete získat podrobnější statistiky o velikosti složek v určitém adresáři nebo vyloučit určité typy souborů, je v tomto případě lepší použít funkce PowerShell. V tomto článku si ukážeme, jak rychle získat velikost konkrétního adresáře na disku (nebo všech podadresářích) pomocí PowerShell.

Tip. Pomocí nástroje konzoly du.exe můžete také získat velikost konkrétní složky na disku..

Příkazy můžete použít k získání velikosti souborů a adresářů v PowerShell. Get-childitem (alias gci) a Measure-Object (alias opatření).

První rutina vám umožní vytvořit seznam souborů v zadaném adresáři podle zadaných kritérií a druhá provede aritmetiku.

Tip. V jednom z našich předchozích článků jsme ukázali, jak pomocí rutiny Get-ChildItem najít největší největší soubory na disku..

Chcete-li například získat velikost složky c: \ ps, spusťte příkaz:

Get-ChildItem c: \ iso | Measure-Object - Délka vlastnictví -sum

Jak vidíte, celková velikost souborů v tomto adresáři je uvedena v poli Sum a je asi 2 GB (velikost je v bajtech).

Chcete-li převést velikost na výhodnější MB nebo GB, použijte následující příkaz:

(gci c: \ iso | změřit délku) .sum / 1Gb

Nebo:

(gci c: \ iso | změřit délku) .sum / 1Mb

Chcete-li výsledek zaokrouhlit na dvě desetinná místa, spusťte příkaz:

"0: N2 GB" -f ((gci c: \ iso | změřit délku -s) .sum / 1Gb)

Chcete-li vypočítat celkovou velikost všech souborů určitého typu v adresáři, použijte následující příkaz (například chceme získat celkovou velikost souborů ISO ve složce):

(gci c: \ iso * .iso | změřit délku -s) .um / 1Mb

Výše uvedené příkazy umožňují získat pouze celkovou velikost souboru v zadaném adresáři. Pokud složka obsahuje podadresáře, nebude velikost souborů v těchto adresářích brána v úvahu. Chcete-li získat celkovou velikost všech souborů v adresáři, s ohledem na podadresáře, musíte použít parametr -Rekurze. Získejte celkovou velikost všech souborů ve složce c: \ Windows.

"0: N2 GB" -f ((gci -force c: \ Windows -Recurse -ErrorAction SilentlyContinue | změřit délky -s) .sum / 1Gb)

Abych vzal v úvahu velikost skrytých a systémových souborů, uvedl jsem navíc argument -síla.

Velikost adresáře C: \ Windows na naší jednotce je tedy asi 16 GB.

Tip. Chcete-li zobrazit chyby přístupu k adresáři, použijte parametr -ErrorAction SilentlyContinue.

Můžete získat velikost všech podsložek první úrovně v zadaném adresáři. Například musíme získat velikost všech uživatelských profilů ve složce C: \ users.

gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. fullname -ErrorAction SilentlyContinue | % $ len + = $ _. length
$ _. celé jméno, '0: N2 GB' -f ($ len / 1Gb)

% - toto je alias pro smyčku objekt foreach.

Do toho. Řekněme, že vaším úkolem je zjistit velikost každého adresáře v kořenovém adresáři pevného disku systému a prezentovat informace ve formě tabulky vhodné pro analýzu s možností třídění podle velikosti adresářů. Chcete-li to provést, použijte rutinu Out-GridView.

Informace o velikosti adresářů na jednotce C: \ spusťte následující skript PowerShell:

$ targetfolder = 'C: \'
$ dataColl = @ ()
gci -force $ targetfolder -ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. fullname -ErrorAction SilentlyContinue | % $ len + = $ _. length
$ foldername = $ _. fullname
$ foldersize = '0: N2' -f ($ len / 1Gb)
$ dataObject = PSObject nového objektu
Add-Member -inputObject $ dataObject -memberType NoteProperty -name “foldername” - value $ foldername
Add-Member -inputObject $ dataObject -memberType NoteProperty -name “foldersizeGb” - hodnota $ foldersize
$ dataColl + = $ dataObject

$ dataColl | Out-GridView - Název „Velikost podadresáře“

Jak vidíte, měli byste vidět grafické znázornění tabulky, ve které jsou označeny všechny složky v kořenovém adresáři jednotky C: \ system a jejich velikost. Kliknutím na záhlaví sloupce tabulky můžete třídit složky podle velikosti.