在 powershell 中添加两个或多个文件的文件大小

在 powershell 中添加两个或多个文件的文件大小

为什么以下代码片段仅将最后一个文件的字节大小添加为 0,而不是将所有文件的大小匹配?

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

我正在尝试计算给定目录中两个或多个 vhd 文件的大小之和。我不是尝试计算人类可读的大小。

答案1

使用 cmdlet 可以更轻松地完成此操作measure-object。以下是示例,您可以假设$Files其中包含一组文件信息对象。

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

相关内容