Cara menemukan file besar pada disk menggunakan PowerShell

Ketika sistem memberi tahu Anda bahwa disk kehabisan ruang kosong, hal pertama yang dilakukan oleh administrator adalah mencoba menemukan semua file besar yang menghabiskan paling banyak ruang. Anda dapat menggunakan Windows Explorer untuk mencari file besar (ada beberapa templat pencarian yang telah ditentukan oleh ukuran), manajer file favorit Anda atau utilitas pihak ketiga. Namun, semua alat ini, tidak seperti PowerShell, membutuhkan instalasi di komputer. Mari kita lihat contoh cepat menemukan file besar pada disk menggunakan PowerShell.

Untuk mendapatkan daftar file dalam direktori tertentu (termasuk subfolder) dan ukurannya, Anda dapat menggunakan cmdlet Dapatkan-childitem. Cmdlet dapat mencari file di seluruh disk, atau di folder tertentu (misalnya, di profil pengguna atau folder lain).

Daftar 10 file terbesar di C: \:

Dapatkan-ChildItem c: \ -r | sort -descending -property length | pilih-nama 10 pertama, Panjang

Bergantung pada ukuran disk dan jumlah file di dalamnya, perintah mungkin memakan waktu.

Kunci -r (Perulangan) menunjukkan bahwa perlu secara rekursif melintasi semua objek bersarang (direktori). Anda dapat membatasi pemeriksaan pada level tertentu dari bersarang menggunakan parameter -Kedalaman.

Jika Anda tidak menentukan jalur, pencarian akan dilakukan pada semua subdirektori dalam direktori saat ini.

Seperti yang Anda lihat, kami mendapat daftar sepuluh file terbesar di disk, diurutkan berdasarkan ukuran file yang menurun.

Kiat. Ketika mengakses beberapa direktori bahkan dengan hak administrator, cmdlet dapat mengembalikan kesalahan akses:

Get-ChildItem: Akses ditolak di jalur "C: \ Windows \ CSC".
baris: 1 karakter: 1
+ Get-ChildItem c: \ -r | sort -descending -property length | pilih -firs ...
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (C: \ Windows \ CSC: String) [Get-ChildItem], UnauthorizedAccessException
+ Koreksi PenuhKualifikasi: Direkam ResmiAksesoris, Microsoft.PowerShell.Commands.GetChildItemCommand

Untuk menekan tampilan kesalahan tersebut, gunakan parameter -ErrorAction Diam Terus.

Seperti yang Anda lihat, ukuran file ditampilkan dalam byte. Untuk kenyamanan, mereka dapat dikonversi ke megabyte. Selain itu, Anda dapat menampilkan direktori tempat file yang ditemukan disimpan:

Get-ChildItem c: \ -r -ErrorAction SilentlyContinue | sort -descending -property length | select-first 10 name, DirectoryName, @ Name = "Mb"; Expression = [Math] :: round ($ _. length / 1MB, 2)

Label yang dihasilkan dapat dikonversi menjadi bentuk grafis yang nyaman menggunakan cmdlet Out-GridView:

Get-ChildItem c: \ -r | sort -descending -property length | select-first 10 name, DirectoryName, @ Name = "Mb"; Expression = [Math] :: round ($ _. length / 1MB, 2) | Out-gridview

Demikian pula, Anda dapat menemukan semua file yang lebih besar dari nilai tertentu, misalnya, 200 MB):

$ size = 200 * 1024 * 1024
GCi C: \ -recurse -ErrorAction SilentlyContinue | where-object $ _. length -gt $ size | Sortir-Panjang objek | ft nama lengkap

Daftar file dapat diunggah ke file CSV seperti ini:

GCi C: \ -kursi | where-object $ _. length -gt $ size | Sortir-Panjang objek | ft nama lengkap | Ekspor-Csv c: \ pc \ LargeFiles_Report.csv

Jika Anda perlu menghitung ukuran semua file dalam direktori, gunakan artikel: Cara menentukan ukuran direktori menggunakan PowerShell.