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

PowerShell:获取共享驱动器顶级文件夹大小并按大小排序

获取共享驱动器顶级文件夹大小并排序的PowerShell方案

你遇到的问题是因为文件夹对象本身没有Length属性,这个属性仅属于文件,所以直接调用会返回空值。要获取文件夹的实际占用大小,必须递归计算其内部所有文件的大小总和。

以下是直接可用的命令,能获取指定共享路径下的顶级文件夹大小,并按从大到小排序:

# 替换$path为你的共享驱动器路径
Get-ChildItem -Path $path -Directory -Depth 0 | 
    Select-Object Name, 
                  @{Name='Size(GB)'; Expression={
                      # 递归获取文件夹内所有文件,计算总大小并转换为GB(保留两位小数)
                      [math]::Round((Get-ChildItem $_.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1GB, 2)
                  }},
                  FullName |
    Sort-Object 'Size(GB)' -Descending

命令细节说明:

  • Get-ChildItem -Path $path -Directory -Depth 0:获取共享路径下的所有顶级文件夹,和你原命令逻辑一致。
  • 计算属性@{Name='Size(GB)'; ...}:
    • 对每个文件夹,递归遍历内部所有文件(-Recurse -File)
    • 用Measure-Object -Sum统计所有文件的Length总和
    • 除以1GB转换为更易读的GB单位,[math]::Round(...,2)保留两位小数
  • Sort-Object 'Size(GB)' -Descending:按文件夹大小从大到小排序

优化版本(处理权限问题)

如果共享驱动器内有部分文件夹你没有访问权限,可以添加错误忽略逻辑,避免命令中断:

Get-ChildItem -Path $path -Directory -Depth 0 | 
    Select-Object Name, 
                  @{Name='Size(GB)'; Expression={
                      $totalSize = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
                      # 无法获取大小的文件夹返回0
                      if ($totalSize) { [math]::Round($totalSize / 1GB, 2) } else { 0 }
                  }},
                  FullName |
    Sort-Object 'Size(GB)' -Descending

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:10:23