为什么以下代码片段仅将最后一个文件的字节大小添加为 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