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

使用PowerShell统计网络共享用户目录大小出现报错如何解决?

问题原因

你遇到的报错是因为$Root是包含FullName属性的自定义对象,不是纯路径字符串,直接作为参数传给Get-ChildItem时,PowerShell会将对象默认转为@{FullName=路径}格式的字符串,拼接上当前驱动器盘符就变成了不存在的错误路径。

修复方案

1. 基础报错修复

只需要在遍历的时候取$Root.FullName作为路径参数即可,修改后遍历部分代码如下:

$StorageLocation = '\\wgsfs01\USERDIR\USERS'
$Roots = Get-ChildItem $StorageLocation | Select Fullname
ForEach ($Root in $Roots) { 
    (Get-ChildItem $Root.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum 
}

补充:加上-File参数可以避免统计文件夹对象本身的元数据大小,统计结果更准确。

2. 完整实现导出CSV需求

下面是符合你全部需求的完整代码,自动适配大小单位为MB/GB,最终导出为CSV文件:

$StorageLocation = '\\wgsfs01\USERDIR\USERS'
$exportPath = "用户目录大小统计.csv"

# 遍历所有用户主目录统计大小
$dirStats = Get-ChildItem $StorageLocation -Directory | ForEach-Object {
    $totalSize = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
    # 自动适配单位
    if ($totalSize -ge 1GB) {
        $sizeStr = [math]::Round($totalSize / 1GB, 2).ToString() + " GB"
    } else {
        $sizeStr = [math]::Round($totalSize / 1MB, 2).ToString() + " MB"
    }
    # 构造输出对象
    [PSCustomObject]@{
        共享完整路径 = $_.FullName
        文件夹大小 = $sizeStr
        原始大小字节 = $totalSize # 可选保留,方便后续排序筛选
    }
}

# 导出为CSV文件
$dirStats | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation

补充:加上-ErrorAction SilentlyContinue参数可以跳过无权限访问的文件/文件夹,避免脚本中途中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:27:03