爲什麼如何爲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