Kako najti velike datoteke na disku s programom PowerShell

Ko vas sistem obvesti, da na disku zmanjka prostora, najprej skrbnik poizkusi najti vse velike datoteke, ki zasedejo največ prostora. V programu Windows Explorer lahko iščete velike datoteke (obstaja več vnaprej določenih predlog za iskanje), vaš najljubši upravitelj datotek ali druge pripomočke. Vendar pa vsa ta orodja, za razliko od PowerShell-a, zahtevajo namestitev v računalnik. Poglejmo primer hitrega iskanja velikih datotek na disku s pomočjo PowerShell-a.

Če želite dobiti seznam datotek v določenem imeniku (vključno s podmapami) in njihove velikosti, lahko uporabite ukazni ukaz Get-Childitem. Cmdlet lahko išče datoteke po disku ali v določeni mapi (na primer v uporabniških profilih ali drugih mapah).

Naštejte 10 največjih datotek na C: \:

Get-ChildItem c: \ -r | sortirati-padajoče-dolžina lastnosti | izberite -prvo 10 ime, dolžina

Glede na velikost diska in število datotek na njem lahko ukaz traja nekaj časa.

Ključ -r (Ponavljanje) pomeni, da je treba rekurzivno prečkati vse ugnezdene predmete (imenike). Preverjanje lahko omejite na določeno raven gnezdenja s parametrom -Globina.

Če poti ne določite, bo iskanje izvedeno v vseh poddirektorjih v trenutnem imeniku.

Kot vidite, smo dobili seznam desetih največjih datotek na disku, razvrščenih po vrstnem redu zmanjšanja velikosti datoteke.

Namig. Ko dostopa do nekaterih imenikov, tudi s skrbniškimi pravicami, cmdlet lahko vrne napako pri dostopu:

Get-ChildItem: dostop na poti "C: \ Windows \ CSC" zavrnjen.
vrstica: 1 znak: 1
+ Get-ChildItem c: \ -r | sortiraj-padajoče-dolžina lastnosti | izberi -firs ...
+ ~~~~~~~~~~~~~~~~~~~~~
+ KategorijaInfo: DovoljenjeDenied: (C: \ Windows \ CSC: String) [Get-ChildItem], NepooblaščenoAccessException
+ FullyQualifiedErrorId: DirUnauthorizedAccessError, Microsoft.PowerShell.Commands.GetChildItemCommand

Za zaustavitev pojava takšnih napak uporabite parameter -ErrorAction SilentlyContinue.

Kot vidite, je velikost datoteke prikazana v bajtih. Za udobje jih je mogoče pretvoriti v megabajte. Poleg tega lahko prikažete imenik, v katerem je shranjena najdena datoteka:

Get-ChildItem c: \ -r -ErrorAction SilentlyContinue | sortiraj-padajoče-dolžina lastnosti | izberite -prvo 10 ime, Ime imenika, @ Ime = "Mb"; Izraz = [Math] :: krog ($ _. dolžina / 1 MB, 2)

Nastalo nalepko lahko pretvorite v priročno grafično obliko s pomočjo ukaznega okna Out-GridView:

Get-ChildItem c: \ -r | sortiraj-padajoče-dolžina lastnosti | izberite -prvo 10 ime, Ime imenika, @ Ime = "Mb"; Izraz = [Math] :: krog ($ _. dolžina / 1 MB, 2) | Pogled zunaj omrežja

Podobno lahko najdete vse datoteke, ki so večje od določene vrednosti, na primer 200 MB):

$ velikost = 200 * 1024 * 1024
GCi C: \ -recurse -ErrorAction SilentlyContinue | kjer-objekt $ _. dolžina -gt $ size | Razvrsti-dolžina predmeta | ft polno ime

Seznam datotek se lahko naloži v datoteko CSV, kot je ta:

GCi C: \ -potekanje | kjer-objekt $ _. dolžina -gt $ size | Razvrsti-dolžina predmeta | ft polno ime | Export-Csv c: \ pc \ LargeFiles_Report.csv

Če morate izračunati velikost vseh datotek v imeniku, uporabite članek: Kako določiti velikost imenika s pomočjo PowerShell.