首页/系统/Windows 运维速查/空间分析:找出哪个目录在吃盘
磁盘与文件43 条

空间分析:找出哪个目录在吃盘

用 Get-ChildItem 递归统计并按目录汇总大小:定位大目录大文件;百万级文件目录建议用 WizTree/TreeSize 提速。

Windows 运维速查系统更新于 2026-10-12
用途统计目录占用,定位大文件大目录
思路递归枚举 -> 按 Length 汇总 -> 降序 Top
加速WizTree/TreeSize 直读 MFT,比脚本快几个数量级

常用示例

常用示例
# 一级子目录大小 Top10
Get-ChildItem 'D:\Data' -Directory | ForEach-Object {
  $s=(Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum
  [pscustomobject]@{Dir=$_.Name; GB=[math]::Round($s/1GB,2)}
} | Sort-Object GB -Descending | Select-Object -First 10
# 单文件 Top20
Get-ChildItem D:\ -Recurse -File -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select-Object -First 20 FullName, @{n='GB';e={[math]::Round($_.Length/1GB,2)}}
统计全程只读;机械盘上全盘扫会很慢且有 IO 压力,业务高峰尽量避开或用 MFT 类工具。

易错点

  • -ErrorAction SilentlyContinue 会吞掉权限错误,统计值可能偏小
  • 符号链接/挂载点会被递归进去造成重复计数,注意排除

数据来源与参考

  • Microsoft Learn:Get-ChildItem
  • Microsoft Learn:Measure-Object

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌