Почему
$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
Эта запись сценариста - это то, где я узнал, как использовать свойство «Количество» в первом примере кода.
Второй пример кода действительно сбивает с толку.В этой справке Центра сценариев работает следующее утверждение:
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
Я неУ меня слишком много проблем с принятием этого, пока я не рассмотрю справочную страницу Объект измерения .Определение параметра для -Property <string[]>
гласит:
По умолчанию используется свойство Count (Длина) объекта.
Если 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
)?
Если я должен использовать Dot Notation, тогда я буду, но яЯ хотел бы воспользоваться этой возможностью, чтобы узнать больше о , как и *, почему PowerShell работает таким образом, а не просто о поверхностном понимании синтаксиса PowerShell.Другими словами, я хочу избежать превращения в Cargo Cult Programmer / Code Monkey .