PowerShell初学者疑问:为何Measure-Object需指定Length属性?
问题1:如何确定要使用Length属性?
先明确
Get-ChildItem -File的输出对象:它返回的是FileInfo类型对象,包含文件的各类属性(大小、创建时间、扩展名等)。要查看这些属性,直接在管道后追加Get-Member命令即可:Get-ChildItem -File | Get-Member运行后你能看到所有可用属性,其中
Length就是代表文件大小的属性——这正是你需要统计总和、平均值的目标数据。理解
Measure-Object的运行逻辑:-Sum、-Average这类参数是用来计算数值型属性的统计值的,必须通过-Property指定具体要计算哪个属性。如果省略属性,Measure-Object默认只会统计输入对象的数量(即Count),无法完成大小相关的统计计算,自然会报错。看帮助的实用技巧:查看
Measure-Object帮助时,重点关注-Property参数的说明——它明确指出这是要测量的属性名称,且当使用-Sum/-Average等参数时,该参数为必填项。你可以用Get-Help Measure-Object -Parameter Property快速定位到这个参数的详细说明。
问题2:输出结果中的Count来源是什么?
Count是Measure-Object默认输出的属性之一,代表输入到管道中的对象总数。不管你有没有指定-Property或其他统计参数,Measure-Object都会自动统计输入对象的数量。比如直接运行Get-ChildItem -File | Measure-Object,哪怕不加任何统计参数,输出里也会有Count——也就是当前文件夹内的文件总数。
当你加上-Length和其他统计参数时,Count依然会保留,因为它是基础统计项,方便你同时知晓“一共统计了多少个文件”以及这些文件大小的相关数据。
内容的提问来源于stack exchange,提问作者Paul McNulty

