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

如何为PowerShell中Measure-Object的结果添加文件名属性?

问题分析与解决

为什么执行后无结果?

Add-Member默认不会将修改后的对象输出到管道中,所以你的foreach循环没有产生任何可赋值给$a的输出,最终$a为空。

解决方法1:添加-PassThru参数

给Add-Member加上-PassThru参数,它会把修改后的对象返回,这样循环结果就能被收集到$a里:

$names = Get-ChildItem -Name
$a = foreach($name in $names) {
    Get-ChildItem $name | Measure-Object -Property Length -Sum | 
        Add-Member -MemberType NoteProperty -Name Name -Value $name -PassThru
}

解决方法2:直接创建自定义对象(更灵活)

跳过Add-Member,直接构造包含所需属性的自定义对象,可读性和可控性更强:

$names = Get-ChildItem -Name
$a = foreach($name in $names) {
    $measureResult = Get-ChildItem $name | Measure-Object -Property Length -Sum
    [PSCustomObject]@{
        Name    = $name
        Count   = $measureResult.Count
        Sum     = $measureResult.Sum
        Average = $measureResult.Average
        Max     = $measureResult.Maximum
        Min     = $measureResult.Minimum
    }
}

解决方法3:用Select-Object生成计算属性

通过Select-Object的计算属性功能,直接合并原测量结果和自定义的Name属性:

$names = Get-ChildItem -Name
$a = foreach($name in $names) {
    Get-ChildItem $name | Measure-Object -Property Length -Sum |
        Select-Object *, @{Name='Name'; Expression={$name}}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:22:35