¿Por quéCómo usar el parámetro "-Property" para el cmdlet "Measure-Object" de PowerShell?
$a = GPS AcroRd32 | Measure
$a.Count
trabajo, cuando
GPS AcroRd32 | Measure -Property Count
no?
El primer ejemplo devuelve un valor de 2
, que es lo que quiero, un número entero.
El segundo ejemplo devuelve lo siguiente:
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 es donde aprendí cómo utilizar el "Count" Propiedad en el primer ejemplo de código.
El segundo ejemplo de código es realmente confuso. En this Script Center reference, la siguiente afirmación funciona:
Import-Csv c:\scripts\test.txt | Measure-Object score -ave -max -min
Todavía funciona incluso si es re-escrito así:
Import-Csv c:\scripts\test.txt | Measure-Object -ave -max -min -property score
no tengo demasiados problemas con aceptar esto hasta que considero la Measure-Object help page . La definición de parámetros para -Property <string[]>
afirma:
El valor por defecto es el conde (longitud) propiedad del objeto.
Si Count
es el valor predeterminado, entonces no debería un pase explícita de Count
trabajo?
GPS AcroRd32 | Measure -Property Count # Fails
El siguiente me proporciona la información que necesito, excepto que no me proporciona con un entero para realizar operaciones en, como se verá:
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
Así que, ¿por qué punto la notación ($a.count
) de trabajo, pero no una declaración escrita de forma explícita (GPS | Measure -Property Count
)?
Si se supone que debo utilizar la notación de puntos, entonces lo haré, pero me gustaría aprovechar esta oportunidad para aprender más sobre cómo y * qué PowerShell funciona de esta manera, en lugar de sólo la construcción de un somero comprensión de la sintaxis de PowerShell. Para decirlo de otra manera, quiero evitar convertirme en un Cargo Cult Programmer/Code Monkey.
'Get-Member -InputObject (GPS Acrord32)' - esto me ayudó a entender que el 'Propiedad Count' vino de. Ahora puedo ver por qué mi "declaración completa" no funciona, ya que era la sintaxis incorrecta. Gracias por mostrarme cómo usar '(GPS AcroRd32) .Count'! – Stisfa