DlaczegoJak korzystać z parametru "-Property" dla polecenia cmdlet programu PowerShell "Measure-Object"?
$a = GPS AcroRd32 | Measure
$a.Count
pracy, gdy
GPS AcroRd32 | Measure -Property Count
nie?
Pierwszy przykład zwraca wartość 2
, która jest tym, co chcę, liczbą całkowitą.
Drugi przykład zwraca to:
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 gdzie nauczyłam się korzystać z "Count" obiekt w pierwszej próbki kodu.
Drugi przykładowy kod jest naprawdę mylący. W this Script Center reference, następujące oświadczenie działa:
Import-Csv c:\scripts\test.txt | Measure-Object score -ave -max -min
on nadal działa, nawet jeśli jest to ponowne napisane tak:
Import-Csv c:\scripts\test.txt | Measure-Object -ave -max -min -property score
nie mam zbyt wiele problemów z zaakceptowaniem tego momentu uważam Measure-Object help page . Definicja parametru dla -Property <string[]>
oznacza:
Domyślną wartością jest właściwość Count (Length) obiektu.
Jeśli domyślną wartością jest Count
, czy nie powinno działać jawne przejście od Count
?
GPS AcroRd32 | Measure -Property Count # Fails
Poniżej przedstawiono mi informacje potrzebne, oprócz tego, że nie daje mi liczbę całkowitą do wykonywania operacji na, jak zobaczysz:
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
Dlaczego więc Dot Notation ($a.count
) działa, ale nie jest jednoznacznie napisane oświadczenie (GPS | Measure -Property Count
)?
Jeśli mam użyć Dot Notation, to zrobię, ale chciałbym skorzystać z tej okazji, aby dowiedzieć się więcej o jak i * dlaczego PowerShell działa w ten sposób, a nie tylko budowania powierzchowny zrozumienie składni PowerShell. Mówiąc inaczej, chcę uniknąć przekształcenia w Cargo Cult Programmer/Code Monkey.
'Get-Member -InputObject (GPS Acrord32)' - to pomogło mi zrozumieć, gdzie 'Count' obiekt pochodzi z. Teraz widzę, dlaczego moje "pełne oświadczenie" nie działa, ponieważ była to niewłaściwa składnia. Dzięki za pokazanie mi, jak używać '(GPS AcroRd32) .Count'! – Stisfa