1

Почему следующий фрагмент только добавляет байтовый размер последнего файла к 0, а не размер всех совпадающих файлов?

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

Я пытаюсь суммировать размер двух или более VHD-файлов в данном каталоге. Я не пытаюсь вычислить человеческий размер.

1 ответ1

0

Есть более простой способ сделать это, используя командлет measure-object . Вот пример, где вы можете предположить, что $Files содержит коллекцию объектов FileInfo .

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


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

Вот пример с использованием предоставленного вами ввода, которое извлекает сумму в одном выражении:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .