Bagaimana saya bisa memodifikasi default ls
( Get-ChildItem
) di PowerShell sehingga menampilkan ukuran file yang dapat dibaca manusia, seperti ls -h
pada mesin * nix?
ls -lh
melakukan logika sederhana dengan ukuran file, sehingga menunjukkan byte untuk file yang sangat kecil, kilobyte untuk file lebih dari 1K (dengan satu tempat desimal jika di bawah 10K), dan megabita untuk file lebih dari 1M (dengan satu tempat desimal jika di bawah 10MB) .
powershell
powershell-2.0
Tom Mayfield
sumber
sumber
Update-TypeData : Error in TypeData "System.IO.FileInfo": The member DefaultDisplayPropertySet is already present.
Menjalankan rilis penuh PS3 terbaru dari 9/4.Get-ChildItem
itu hanya akan melakukan ini di luar kotak-DefaultDisplayPropertySet
bekerja?Pertama, buat fungsi berikut:
Anda kemudian dapat menyalurkan output
Get-ChildItem
melaluiSelect-Object
dan menggunakan properti yang dihitung untuk memformat ukuran file:Fungsi tentu saja dapat ditingkatkan untuk memperhitungkan ukuran dalam kisaran PB dan banyak lagi, atau untuk memvariasikan jumlah titik desimal yang diperlukan.
sumber
ls2
, coba buat fungsi lain yang melakukan logika yang Anda jelaskan berdasarkan parameter, lalu tambahkan alias untuk itu. Lihat di sini untuk informasi lebih lanjut tentang cara membuat alias.Get-Variable profile
lokasinya).$size
didefinisikan sebagaiint
, yaitu aint32
. Agar ini berfungsi dengan file besar, tentukan$size
sebagaiint64
atauuint64
.Select-Object : Es wurde kein Positionsparameter gefunden, der das Argument "System.Collections.Hashtable" akzeptiert.
. Bagaimana cara menentukan jalur? Saya menggunakan$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}
. Ini berfungsi, tetapi tanpa ukuran file.Sesuatu seperti berikut ini untuk daftar ukuran file saja. Ya itu agak sakit pada mata tetapi berhasil menyelesaikan pekerjaan.
Untuk mengonversi ke KB:
Untuk mengonversi ke MB:
sumber
pipe
solusi!berdasarkan jawaban dari walid toumi:
Langkah-langkah yang harus dilakukan:
FileSize
-Properti baru$PROFILE
Buat Type-file Anda sendiri dengan
FileSize
-Properti baruBuat Type-file Anda sendiri:
MyTypes.ps1xml
(Saya masukkan
$Env:USERPROFILE\Documents\WindowsPowershell
, jadi tepat di sebelah saya$PROFILE
)memuat properti baru dalam sesi PowerShell:
Update-TypeData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyTypes.ps1xml
Get-ChildItem | Format-Table -Property Name, Length, FileSize
Ubah format output standar untuk FileInfo
buat Fileformat-file Anda sendiri:
MyFileFormat.format.ps1xml
(Lagi-lagi masuk$Env:USERPROFILE\Documents\WindowsPowershell\
)(Ini allmost salinan langsung dari aslinya
$PSHOME\FileFormat.format.ps1xml
. Saya hanya berubahLength
untukFileSize
beberapa kali)memuat format baru dalam sesi PowerShell kami:
Update-FormatData -PrependPath $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
Get-ChildItem
muat perubahan di
$PROFILE
salin baris ini
$PROFILE
untuk memuat perubahan di setiap sesi barusumber
Saya menggunakan solusi jmreicha dengan alias di $ profil saya:
Sekarang saya cukup mengetik:
megs [whatever]
sumber