Поделиться через


Measure-Object

Рассчитывает числовые свойства объектов, а также количество знаков, слов и строк в строковых объектах, например в текстовых файлах.

Синтаксис

Measure-Object
       [[-Property] <PSPropertyExpression[]>]
       [-InputObject <PSObject>]
       [-StandardDeviation]
       [-Sum]
       [-AllStats]
       [-Average]
       [-Maximum]
       [-Minimum]
       [<CommonParameters>]
Measure-Object
       [[-Property] <PSPropertyExpression[]>]
       [-InputObject <PSObject>]
       [-Line]
       [-Word]
       [-Character]
       [-IgnoreWhiteSpace]
       [<CommonParameters>]

Описание

Командлет Measure-Object вычисляет значения свойств определенных типов объекта. Measure-Object выполняет три типа измерений в зависимости от параметров команды.

Командлет Measure-Object выполняет вычисления по значениям свойств объектов. Можно использовать Measure-Object для подсчета объектов или подсчета объектов с указанным свойством. Можно также использовать Measure-Object для вычисления минимального, максимального значения, суммы, стандартногоdeviation и среднего числа значений. Для объектов String можно также использовать Measure-Object для подсчета количества строк, слов и символов.

Примеры

Пример 1. Подсчет файлов и папок в каталоге

Эта команда определяет количество файлов и папок в текущем каталоге.

Get-ChildItem | Measure-Object

Пример 2. Измерение файлов в каталоге

Эта команда отображает минимальный, максимальный и суммарный размер всех файлов в текущем каталоге и средний размер файла в каталоге.

Get-ChildItem | Measure-Object -Property length -Minimum -Maximum -Sum -Average

Пример 3. Измерение текста в текстовом файле

Эта команда отображает количество знаков, слов и строк в файле Text.txt. Без необработанного параметра Get-Content выводит файл в виде массива строк.

Первая команда используется Set-Content для добавления текста по умолчанию в файл.

"One", "Two", "Three", "Four" | Set-Content -Path C:\Temp\tmp.txt
Get-Content C:\Temp\tmp.txt | Measure-Object -Character -Line -Word

Lines Words Characters Property
----- ----- ---------- --------
    4     4         15

Пример 4. Измерение объектов, содержащих указанное свойство

В этом примере число объектов с свойством DisplayName . Первые две команды извлекают все службы и процессы на локальном компьютере. Третья команда подсчитывает объединенное количество служб и процессов. Последняя команда объединяет две коллекции и передает результат Measure-Object.

Объект System.Diagnostics.Process не имеет свойства DisplayName и остается без окончательного количества.

$services = Get-Service
$processes = Get-Process
$services + $processes | Measure-Object
$services + $processes | Measure-Object -Property DisplayName

Count    : 682
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Count    : 290
Average  :
Sum      :
Maximum  :
Minimum  :
Property : DisplayName

Пример 5. Измерение содержимого CSV-файла

Эта команда вычисляет среднее время работы сотрудников в компании.

Файл ServiceYrs.csv представляет собой CSV-файл, содержащий номер сотрудника и годы обслуживания каждого сотрудника. Первая строка в таблице — это строка заголовка EmpNo, Years.

Import-Csv При импорте файла результатом является PSCustomObject со свойствами EmpNo и Years. Вы можете вычислить Measure-Object значения этих свойств так же, как и любое другое свойство объекта.

Import-Csv d:\test\serviceyrs.csv | Measure-Object -Property years -Minimum -Maximum -Average

Пример 6. Измерение логических значений

В этом примере показано, как Measure-Object можно измерять логические значения. В этом случае используется логическое свойство PSIsContainer для измерения частоты папок (vs. files) в текущем каталоге.

Get-ChildItem | Measure-Object -Property psiscontainer -Maximum -Sum -Minimum -Average

Count             : 126
Average           : 0.0634920634920635
Sum               : 8
Maximum           : 1
Minimum           : 0
StandardDeviation :
Property          : PSIsContainer

Пример 7. Измерение строк

В следующем примере измеряется количество строк, сначала одна строка, а затем по нескольким строкам. Символ `n новой строки разделяет строки на несколько строк.

# The newline character `n separates the string into separate lines, as shown in the output.
"One`nTwo`nThree"
"One`nTwo`nThree" | Measure-Object -Line

One
Two
Three


Lines Words Characters Property
----- ----- ---------- --------
    3

# The first string counts as a single line.
# The second string is separated into two lines by the newline character.
"One", "Two`nThree" | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
    3

# The Word switch counts the number of words in each InputObject
# Each InputObject is treated as a single line.
"One, Two", "Three", "Four Five" | Measure-Object -Word -Line

Lines Words Characters Property
----- ----- ---------- --------
    3     5

Пример 8. Измерение всех значений

Начиная с PowerShell 6 параметр AllStats Measure-Object позволяет измерять всю статистику вместе.

1..5 | Measure-Object -AllStats

Count             : 5
Average           : 3
Sum               : 15
Maximum           : 5
Minimum           : 1
StandardDeviation : 1.58113883008419
Property          :

Пример 9. Измерение с помощью свойств scriptblock

Начиная с PowerShell 6, Measure-Object поддерживает свойства ScriptBlock . В следующем примере показано, как использовать свойство ScriptBlock для определения размера в Мегабайтах всех файлов в каталоге.

Get-ChildItem | Measure-Object -Sum {$_.Length/1MB}

Пример 10. Хэш-таблицы мер

Начиная с PowerShell 6, Measure-Object поддерживает измерение хэш-входных данных. В следующем примере определяется наибольшее значение для num ключа 3 хэш-объектов .

@{num=3}, @{num=4}, @{num=5} | Measure-Object -Maximum Num

Count             : 3
Average           :
Sum               :
Maximum           : 5
Minimum           :
StandardDeviation :
Property          : num

Пример 11. Измерение стандартного отклонения

Начиная с PowerShell 6, Measure-Object поддерживает -StandardDeviation этот параметр. В следующем примере определяется стандартное отклонение ЦП, используемого всеми процессами. Большое отклонение означает небольшое количество процессов, потребляющих большую часть ЦП.

Get-Process | Measure-Object -Average -StandardDeviation CPU

Count             : 303
Average           : 163.032384488449
Sum               :
Maximum           :
Minimum           :
StandardDeviation : 859.444048419069
Property          : CPU

Пример 12. Измерение с помощью подстановочных знаков

Начиная с PowerShell 6, Measure-Object поддерживает измерение объектов с помощью подстановочных знаков в именах свойств. В следующем примере определяется максимальное использование памяти страниц между набором процессов.

Get-Process | Measure-Object -Maximum *paged*memory*size

Count             : 303
Average           :
Sum               :
Maximum           : 735784
Minimum           :
StandardDeviation :
Property          : NonpagedSystemMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 352104448
Minimum           :
StandardDeviation :
Property          : PagedMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 2201968
Minimum           :
StandardDeviation :
Property          : PagedSystemMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 719032320
Minimum           :
StandardDeviation :
Property          : PeakPagedMemorySize

Параметры

-AllStats

Указывает, что командлет отображает всю статистику указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Average

Указывает, что командлет отображает среднее значение указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Character

Указывает, что командлет подсчитывает количество символов в входных объектах.

Примечание.

Параметр Word, Char и Line учитывается внутри каждого входного объекта, а также между входными объектами. См. пример 7.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-IgnoreWhiteSpace

Указывает, что командлет игнорирует пробелы в числах символов. По умолчанию пробелы учитываются.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Указывает, какие объекты нужно измерять. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.

При использовании параметра InputObject вместо Measure-Objectрезультатов Measure-Objectкоманды piping в значение InputObject рассматривается как один объект.

Рекомендуется использовать Measure-Object в конвейере, если требуется измерять коллекцию объектов на основе того, имеют ли объекты определенные значения в определенных свойствах.

Тип:PSObject
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Line

Указывает, что командлет подсчитывает количество строк в входных объектах.

Примечание.

Параметр Word, Char и Line учитывается внутри каждого входного объекта, а также между входными объектами. См. пример 7.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Maximum

Указывает, что командлет отображает максимальное значение указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Minimum

Указывает, что командлет отображает минимальное значение указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Property

Указывает одно или несколько свойств для измерения. Если вы не указываете другие меры, Measure-Object подсчитывает объекты с заданными свойствами.

Значение параметра Property может быть новым вычисляемым свойством. Вычисляемое свойство должно быть блоком скрипта. Дополнительные сведения см. в about_Calculated_Properties.

Тип:PSPropertyExpression[]
Position:0
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:True

-StandardDeviation

Указывает, что командлет отображает стандартное отклонение значений указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Sum

Указывает, что командлет отображает сумму значений указанных свойств.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Word

Указывает, что командлет подсчитывает количество слов в входных объектах.

Примечание.

Параметр Word, Char и Line учитывается внутри каждого входного объекта, а также между входными объектами. См. пример 7.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

PSObject

Объекты можно передать в этот командлет.

Выходные данные

GenericMeasureInfo

По умолчанию этот командлет возвращает объект GenericMeasureInfo .

TextMeasureInfo

При использовании параметра Word этот командлет возвращает объект TextMeasureInfo .

Примечания

PowerShell включает следующие псевдонимы для Measure-Object:

  • Все платформы:
    • measure

Начиная с PowerShell 7.3, Measure-Object больше не возвращает ошибку при обработке объекта, который отсутствует свойство, если вы не работаете в StrictMode. В StrictModeMeasure-Object возвращается System.Management.Automation.PSArgumentException при обработке объекта, который отсутствует указанное свойство.