Cara mengetahui ukuran folder pada disk menggunakan PowerShell

Sebagian besar pengguna Windows terbiasa bahwa cara termudah untuk mendapatkan ukuran folder adalah dengan membuka propertinya di Windows Explorer. Yang lebih berpengalaman lebih suka menggunakan utilitas seperti TreeSize atau WinDirStat. Tetapi, jika Anda perlu mendapatkan statistik yang lebih terperinci tentang ukuran folder di direktori tertentu, atau mengecualikan jenis file tertentu, dalam hal ini lebih baik menggunakan fitur PowerShell. Pada artikel ini, kami akan menunjukkan cara cepat mendapatkan ukuran direktori tertentu pada disk (atau semua subdirektori) menggunakan PowerShell.

Kiat. Anda juga dapat menggunakan utilitas konsol du.exe untuk mendapatkan ukuran folder tertentu pada disk..

Anda bisa menggunakan perintah untuk mendapatkan ukuran file dan direktori di PowerShell. Dapatkan-childitem (alias gci) dan Measure-Object (alias ukuran).

Cmdlet pertama memungkinkan Anda untuk membuat daftar file di direktori yang ditentukan sesuai dengan kriteria yang ditentukan, dan yang kedua melakukan aritmatika.

Kiat. Dalam salah satu artikel kami sebelumnya, kami menunjukkan cara menggunakan cmdlet Get-ChildItem untuk menemukan file TOP terbesar di disk..

Misalnya, untuk mendapatkan ukuran folder c: \ ps, jalankan perintah:

Dapatkan-ChildItem c: \ iso | Measure-Object -Property Length -sum

Seperti yang Anda lihat, ukuran total file dalam direktori ini ditunjukkan dalam bidang Sum dan sekitar 2 GB (ukurannya dalam byte).

Untuk mengonversi ukuran ke MB atau GB yang lebih nyaman, gunakan perintah berikut:

(gci c: \ iso | mengukur Panjang -s) .sum / 1Gb

Atau:

(gci c: \ iso | mengukur Panjang -s) .sum / 1Mb

Untuk membulatkan hasil ke dua tempat desimal, jalankan perintah:

"0: N2 GB" -f ((gci c: \ iso | mengukur Panjang -s) .sum / 1Gb)

Untuk menghitung ukuran total semua file dari jenis tertentu dalam direktori, gunakan perintah berikut (misalnya, kami ingin mendapatkan ukuran total file ISO dalam folder):

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

Perintah di atas memungkinkan Anda untuk hanya mendapatkan ukuran file total di direktori yang ditentukan. Jika folder tersebut berisi subdirektori, ukuran file dalam direktori ini tidak akan diperhitungkan. Untuk mendapatkan ukuran total semua file dalam direktori, dengan mempertimbangkan subdirektori, Anda perlu menggunakan parameter -Perulangan. Dapatkan ukuran total semua file di folder c: \ Windows.

"0: N2 GB" -f ((gci-force c: \ Windows -Recurse -ErrorAction SilentlyContinue | ukur Panjang -s) .sum / 1Gb)

Untuk memperhitungkan ukuran file tersembunyi dan sistem, saya juga menetapkan argumen -kekuatan.

Jadi, ukuran direktori C: \ Windows pada drive kami adalah sekitar 16 GB.

Kiat. Untuk tidak menampilkan kesalahan akses direktori gunakan parameter -ErrorAction Diam Terus.

Anda bisa mendapatkan ukuran semua subfolder tingkat pertama di direktori yang ditentukan. Sebagai contoh, kita perlu mendapatkan ukuran semua profil pengguna di folder C: \ pengguna.

gci-force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. nama lengkap -ErrorAction SilentlyContinue | % $ len + = $ _. panjang
$ _. nama lengkap, '0: N2 GB' -f ($ len / 1Gb)

% - ini adalah alias untuk perulangan foreach-object.

Silakan. Katakanlah tugas Anda adalah untuk mengetahui ukuran setiap direktori di root hard drive sistem dan menyajikan informasi dalam bentuk tabel yang nyaman untuk dianalisis dengan kemampuan untuk mengurutkan berdasarkan ukuran direktori. Untuk melakukan ini, gunakan cmdlet Out-GridView.

Untuk informasi tentang ukuran direktori pada drive C: \, jalankan skrip PowerShell berikut:

$ targetfolder = 'C: \'
$ dataColl = @ ()
gci-force $ targetfolder -ErrorAction SilentlyContinue | ? $ _ -is [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. nama lengkap -ErrorAction SilentlyContinue | % $ len + = $ _. panjang
$ foldername = $ _. nama lengkap
$ folderize = '0: N2' -f ($ len / 1Gb)
$ dataObject = Objek-PSObject Baru
Tambah-Anggota -inputObject $ dataObject -memberType NoteProperty -name “foldername” -nilai $ foldername
Tambah-Anggota -inputObject $ dataObject -memberType NoteProperty -name “folderizeGb” -nilai $ folderize
$ dataColl + = $ dataObject

$ dataColl | Out-GridView -Title "Ukuran Subdirektori"

Seperti yang Anda lihat, Anda akan melihat representasi grafik dari tabel di mana semua folder di root dari drive sistem C: \ dan ukurannya ditunjukkan. Dengan mengklik pada tajuk kolom tabel, Anda dapat mengurutkan folder berdasarkan ukuran.