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.

koma5
sumber
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
Anthony Neace
sumber
dan ini bekerja seperti pesona juga ... terima kasih banyak!
koma5