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

PowerShell脚本问题:如何将多文件夹文件统计合并为单表格

解决PowerShell合并文件夹文件计数表格的问题

我来帮你搞定这个问题!你遇到的错误是因为直接尝试对单个PSObject执行加法操作——PowerShell里单个对象并不支持这种+=的累加方式。下面给你两种简单可行的解决方案:

方案一:初始化数组并累加对象

先创建一个空数组来存储所有结果对象,循环中把每个文件夹的统计对象添加到数组里,最后统一输出表格:

$folders = @("c:\temp", "C:\temp\tosh")
# 初始化一个空数组用于存储结果
$results = @()

foreach ($folder in $folders) {
    $folderFiles = Get-ChildItem -Path $folder -File
    # 用更简洁的方式创建自定义对象(替代New-Object)
    $obj = [PSCustomObject]@{
        "Folder Name" = $folder  # 可以直接用你想要的列名
        Count = $folderFiles.Count
    }
    # 将对象添加到数组中
    $results += $obj
}

# 一次性输出合并后的表格
$results | Format-Table -AutoSize

注意:这种方法对于少量文件夹完全没问题,但如果文件夹数量非常多,+=操作会每次创建新数组,效率会稍低。

方案二:用管道收集对象(推荐)

利用PowerShell的管道特性自动收集所有结果对象,代码更简洁,效率也更高:

$folders = @("c:\temp", "C:\temp\tosh")

# 通过ForEach-Object管道生成所有统计对象并收集
$results = $folders | ForEach-Object {
    $folderFiles = Get-ChildItem -Path $_ -File
    [PSCustomObject]@{
        "Folder Name" = $_
        Count = $folderFiles.Count
    }
}

# 输出合并后的表格
$results | Format-Table -AutoSize

为什么你之前的尝试会报错?

如果没有提前把$results初始化为数组(@()),第一次赋值$results = $obj会让$results变成单个PSObject类型。当你第二次执行$results += $obj时,PowerShell会尝试对两个PSObject执行加法操作,但PSObject并没有定义加法方法,所以就会抛出“PSObject does not contain a method named 'op_Addition'”的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:30:37