menambahkan ukuran file dari dua atau lebih file di PowerShell


1

Mengapa cuplikan berikut hanya menambahkan ukuran byte dari file terakhir ke 0 dan bukan ukuran semua file yang cocok?

$sizeOfVhds = 0
(Get-Item "\\blahhh.com\foo\bar\*.vhd") |
ForEach-Object {
    $sizeOfVhds = $sizeOfVhds + $_.length
}

Saya mencoba untuk menjumlahkan ukuran dua atau lebih file VHD dalam direktori yang diberikan. Saya tidak mencoba menghitung ukuran yang dapat dibaca manusia.


2
Saya tidak terlalu berpengalaman dengan PS, tetapi get-itemhanya akan mendapatkan satu objek. Tidakkah Anda menginginkannya get-childitemkarena Anda menginginkan array dengan semua VHD?
nixda

@nixda memiliki setidaknya sebagian dari masalah Anda. Gabungkan dengan item ukuran
Austin T French

sulit dipercaya ... tapi reboot memecahkan Masalah saya. Kode di atas dan solusi @nixda bekerja dengan sempurna.
koma5

Jawaban:


0

Ada cara yang lebih mudah untuk melakukan ini menggunakan measure-objectcmdlet. Berikut adalah contoh di mana Anda dapat menganggap $Filesberisi kumpulan objek FileInfo .

PS C:\> $Files | measure-object -Property length -sum


Count    : 61
Average  :
Sum      : 167476924
Maximum  :
Minimum  :
Property : Length

Berikut ini contoh menggunakan input yang Anda berikan yang mengekstraksi jumlah dalam satu pernyataan:

PS C:\> $sum = ((Get-ChildItem "\\blahhh.com\foo\bar\*.vhd") | 
        Measure-Object -Property length -sum) | 
        Select-Object -ExpandProperty Sum
PS C:\> $sum
Sum of the value of 'length' for each object in collection outputted here

dan ini bekerja seperti pesona juga ... terima kasih banyak!
koma5
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.