You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用Measure-Object计算目录大小时返回值不正确

问题解决思路

问题根源

计算目录大小的自定义属性表达式存在路径缺失问题:Get-ChildItem -Recurse -File -Force没有指定要统计的目标目录路径,默认会读取当前PowerShell会话的工作目录下的所有文件,因此所有目录的大小统计结果都是当前工作目录的总大小,自然全部相同。

修正后的代码

Get-ChildItem -Path $HDriveServer1 -Depth 1 -Directory -Force | 
Where-Object { $_.LastWriteTime -le (Get-Date).AddYears(-7)} | 
Select-Object Name,
@{Name='Size(MB)';Exp={(Get-ChildItem -Path $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB}},
LastWriteTime | 
Out-File $report

优化建议

  • 如果需要更方便后续筛选、排序统计结果,可以把Out-File $report替换为Export-Csv -Path $report -NoTypeInformation -Encoding UTF8,导出为CSV格式文件用Excel打开处理
  • 目录体积较大时可以把单位换算为GB,把/ 1MB改为/ 1GB即可
  • -ErrorAction SilentlyContinue参数可以跳过无权限访问的目录,避免脚本运行报错中断

内容的提问来源于stack exchange,提问作者Jay Phillips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:45:03