为什么如何为PowerShell的“Measure-Object”cmdlet使用“-Property”参数?
$a = GPS AcroRd32 | Measure
$a.Count
工作,当
GPS AcroRd32 | Measure -Property Count
不?
第一个示例返回一个值2
,这是我想要的一个整数。
第二个例子返回此:
Measure-Object : Property "Count" cannot be found in any object(s) input.
At line:1 char:23
+ GPS AcroRd32 | Measure <<<< -Property Count
+ CategoryInfo : InvalidArgument: (:) [Measure-Object], PSArgumentException
+ FullyQualifiedErrorId : GenericMeasurePropertyNotFound,Microsoft.PowerShell.Commands.MeasureObjectCommand
This Scripting Guy entry是我学会了如何使用 “计数” 属性的第一个代码样本。
第二个代码示例非常混乱。在this Script Center reference,下面的语句的工作原理:
Import-Csv c:\scripts\test.txt | Measure-Object score -ave -max -min
它仍然有效,即使它重新编写像这样:
Import-Csv c:\scripts\test.txt | Measure-Object -ave -max -min -property score
我没有与接受这太多的问题,直到我认为Measure-Object help page 。 -Property <string[]>
的参数定义为:
缺省值为对象的Count(Length)属性。
如果Count
是默认值,那么不应该显式传递Count
的工作吗?
GPS AcroRd32 | Measure -Property Count # Fails
以下为我提供我所需要的信息,但它不提供我来执行操作的一个整数,你会看到:
PS C:\Users\Me> $a = GPS AcroRd32 | Measure
PS C:\Users\Me> $a
Count : 2
Average :
Sum :
Maximum :
Minimum :
Property :
PS C:\Users\Me> $a -is [int]
False
那么,为什么Dot Notation($a.count
)工作,但没有明确书面陈述(GPS | Measure -Property Count
)?
如果我应该使用点表示法,那么我会的,但我想借此机会更多地了解如何和 * 为什么 PowerShell中以这种方式工作,而不是只建立一个敷衍了解PowerShell的语法。换句话说,我想避免变成Cargo Cult Programmer/Code Monkey。
'获取会员-InputObject(GPS AcroRd32)' - 这帮助我了解其中'Count'物业来自。现在我明白了为什么我的“完整声明”不起作用,因为它是错误的语法。感谢您向我展示如何使用'(GPS AcroRd32).Count'! – Stisfa