【发布时间】:2011-09-30 18:44:13
【问题描述】:
为什么
$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 是默认值,那么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
那么,为什么点表示法 ($a.count) 有效,而不是明确的书面声明 (GPS | Measure -Property Count)?
如果我应该使用点表示法,那么我会,但我想借此机会详细了解 如何 和 *为什么 PowerShell 的工作原理这样,而不是仅仅建立对 PowerShell 语法的敷衍理解。换句话说,我想避免变成Cargo Cult Programmer/Code Monkey。
【问题讨论】:
标签: powershell syntax powershell-2.0