Večina uporabnikov sistema Windows je navajena, da je velikost mape najlažji za doseganje velikosti, če odprete njene lastnosti v programu Windows Explorer. Bolj izkušeni raje uporabljajo pripomočke, kot sta TreeSize ali WinDirStat. Če pa morate dobiti podrobnejšo statistiko o velikosti map v določenem imeniku ali izključiti nekatere vrste datotek, je v tem primeru bolje uporabiti funkcije PowerShell. V tem članku bomo pokazali, kako hitro pridobiti velikost določenega imenika na disku (ali vseh poddirektorjih) s pomočjo PowerShell-a.
Namig. Uporabite lahko tudi pripomoček konzole du.exe, da dobite velikost določene mape na disku..Z ukazi lahko dobite velikosti datotek in imenikov v PowerShellu. Get-Childitem (alias gci) in Ukrep-predmet (vzdevek ali ukrep).
Prvi cmdlet vam omogoča, da ustvarite seznam datotek v določenem imeniku v skladu z določenimi merili, drugi pa izvede aritmetiko.
Namig. V enem od naših prejšnjih člankov smo pokazali, kako z ukazno ploščo Get-ChildItem najti največje datoteke na disku..Na primer, da dobite velikost mape c: \ ps, zaženite ukaz:
Get-ChildItem c: \ iso | Merite-predmet-dolžina lastnosti -sum
Kot lahko vidite, je skupna velikost datotek v tem imeniku navedena v polju Vsota in znaša približno 2 GB (velikost je v bajtih).
Če želite velikost pretvoriti v bolj priročno MB ali GB, uporabite naslednji ukaz:
(gci c: \ iso | meri dolžina -s) .sum / 1Gb
Ali pa:
(gci c: \ iso | meri dolžino -s) .sum / 1Mb
Če želite rezultat zaokrožiti na dve decimalni mesti, zaženite ukaz:
"0: N2 GB" -f ((gci c: \ iso | izmeri dolžino -s) .sum / 1Gb)
Če želite izračunati skupno velikost vseh datotek določene vrste v imeniku, uporabite naslednji ukaz (na primer želimo dobiti skupno velikost datotek ISO v mapi):
(gci c: \ iso * .iso | meri dolžino -s) .sum / 1Mb
Zgornji ukazi omogočajo, da v navedenem imeniku dobite samo skupno velikost datoteke. Če mapa vsebuje podmape, velikost datotek v teh imenikih ne bo upoštevana. Če želite dobiti skupno velikost vseh datotek v imeniku, ob upoštevanju poddirektorjev, morate uporabiti -Ponovite. Pridobite skupno velikost vseh datotek v mapi c: \ Windows.
"0: N2 GB" -f ((gci -force c: \ Windows -Recurse -ErrorAction SilentlyContinue | izmeri dolžino -s) .sum / 1Gb)
Za upoštevanje velikosti skritih in sistemskih datotek sem dodatno navedel argument -silo.
Torej, velikost imenika C: \ Windows na našem pogonu je približno 16 GB.
Namig. Če ne želite prikazati napak v dostopu do imenika, uporabite parameter -ErrorAction SilentlyContinue.V podanem imeniku lahko dobite velikost vseh podmap prve stopnje. Na primer, moramo dobiti velikost vseh uporabniških profilov v mapi C: \ users.
gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -je [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. polno ime -ErrorAction SilentlyContinue | % $ len + = $ _. length
$ _. polno ime, '0: N2 GB' -f ($ len / 1Gb)
% - to je vzdevek zanke objekt predigre.
Pojdi naprej. Recimo, da je vaša naloga ugotoviti velikost vsakega imenika v korenu sistemskega trdega diska in predstaviti informacije v tabeli, priročni za analizo, z možnostjo razvrščanja po velikosti imenikov. Če želite to narediti, uporabite ukazni ukaz Out-GridView.
Za informacije o velikosti imenikov na pogonu C: \ zaženite ta skript PowerShell:
$ targetfolder = 'C: \'
$ dataColl = @ ()
gci -force $ targetfolder -ErrorAction SilentlyContinue | ? $ _ -je [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. polno ime -ErrorAction SilentlyContinue | % $ len + = $ _. length
$ foldername = $ _. polno ime
$ foldersize = '0: N2' -f ($ len / 1Gb)
$ dataObject = Nov objekt-PSObject
Add-Member -inputObject $ dataObject -memberType NoteProperty -name "ime mape" -value $ ime mape
Add-Member -inputObject $ dataObject -memberType NoteProperty -ime “foldersizeGb” -value $ foldersize
$ dataColl + = $ dataObject
$ dataColl | Out-GridView -Title "Velikost poddirektorja"
Kot vidite, bi morali videti grafični prikaz tabele, v kateri so navedene vse mape v korenu sistemskega pogona C: \ in njihova velikost. S klikom na naslov stolpca tabele lahko razvrstite mape po velikosti.