Jak najít velké soubory na disku pomocí PowerShell

Když vás systém upozorní, že na disku je nedostatek volného místa, první věcí, kterou správce udělá, je pokusit se najít všechny velké soubory, které zabírají nejvíce místa. Pomocí Průzkumníka Windows můžete vyhledávat velké soubory (existuje několik předdefinovaných vyhledávacích šablon podle velikosti), vašeho oblíbeného správce souborů nebo nástrojů třetích stran. Všechny tyto nástroje však na rozdíl od PowerShell vyžadují instalaci do počítače. Podívejme se na příklad rychlého nalezení velkých souborů na disku pomocí PowerShell.

Chcete-li získat seznam souborů v konkrétním adresáři (včetně podsložek) a jejich velikost, můžete použít cmdlet Get-childitem. Rutina může hledat soubory na celém disku nebo v určité složce (například v uživatelských profilech nebo jiných složkách).

Seznam 10 největších souborů na C: \:

Get-ChildItem c: \ -r | třídění - vzestupně - délka produktu | vyberte - první název, délka

V závislosti na velikosti disku a počtu souborů na něm může příkaz chvíli trvat.

Klíč -r (Recurse) označuje, že je nutné rekurzivně procházet všechny vnořené objekty (adresáře). Pomocí parametru můžete omezit kontrolu na určitou úroveň vnoření -Hloubka.

Pokud nezadáte cestu, bude vyhledávání provedeno ve všech podadresářích v aktuálním adresáři.

Jak vidíte, dostali jsme seznam deseti největších souborů na disku, seřazených podle zmenšující se velikosti souboru.

Tip. Při přístupu k některým adresářům i s právy správce může cmdlet vrátit chybu přístupu:

Get-ChildItem: Přístup byl odepřen na cestě "C: \ Windows \ CSC".
řádek: 1 znak: 1
+ Get-ChildItem c: \ -r | třídit-vzestupně-délka produktu | vyberte -firs ...
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (C: \ Windows \ CSC: String) [Get-ChildItem], UnauthorAccessException
+ Plně kvalifikovanýErrorId: DirUnauthorAccessError, Microsoft.PowerShell.Commands.GetChildItemCommand

Chcete-li potlačit výskyt takových chyb, použijte parametr -ErrorAction SilentlyContinue.

Jak vidíte, velikost souboru je zobrazena v bajtech. Pro větší pohodlí je lze převést na megabajty. Kromě toho můžete zobrazit adresář, ve kterém je nalezený soubor uložen:

Get-ChildItem c: \ -r -ErrorAction SilentlyContinue | sort-descending -pracovní délka | vyberte -prvé 10 jmen, DirectoryName, @ Name = "Mb"; Expression = [Math] :: round ($ _. length / 1MB, 2)

Výsledný štítek lze převést do vhodné grafické podoby pomocí rutiny Out-GridView:

Get-ChildItem c: \ -r | třídit-vzestupně-délka produktu | vyberte -prvé 10 jmen, DirectoryName, @ Name = "Mb"; Expression = [Math] :: round ($ _. length / 1MB, 2) | Out-gridview

Podobně můžete najít všechny soubory, které jsou větší než určitá hodnota, například 200 MB):

$ size = 200 * 1024 * 1024
GCi C: \ -recurse -ErrorAction SilentlyContinue | where-object $ _. length -gt $ size | Délka objektu třídění | ft celé jméno

Seznam souborů lze nahrát do souboru CSV, jako je tento:

GCi C: \ -recurse | where-object $ _. length -gt $ size | Délka objektu třídění | ft celé jméno | Export-Csv c: \ pc \ LargeFiles_Report.csv

Pokud potřebujete vypočítat velikost všech souborů v adresáři, použijte článek: Jak určit velikost adresáře pomocí PowerShell.