Measure-Object (Microsoft.PowerShell.Utility)
Measure-Object
- Модуль:
- Microsoft.PowerShell.Utility
Вычисляет числовые свойства объектов, а также символы, слова и строки в строковых объектах, таких как текстовые файлы.
Синтаксис
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 для вычисления Минимума, Максимума, Суммы, Стандартного отклонения . и Среднее числовых значений. Для объектов String вы также можете использовать Measure-Object для подсчета количества строк, слов и символов.
Примеры
Пример 1. Подсчет файлов и папок в каталоге
Эта команда подсчитывает файлы и папки в текущем каталоге.
Get-ChildItem | Measure-ObjectПример 2. Измерение файлов в каталоге
Эта команда отображает Минимум, Максимум и Сумму размеров всех файлов в текущем каталоге, а также средний размер файла в каталог.
Get-ChildItem | Measure-Object -Property length -Minimum -Maximum -Sum -AverageПример 3. Измерение текста в текстовом файле
Эта команда отображает количество символов, слов и строк в файле Text.txt. Без параметра Raw 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 Boolean для измерения количества папок (по сравнению с файлами) в текущем каталоге.
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. Измерение с использованием свойств блока сценария
Начиная с PowerShell 6, Measure-Object поддерживает свойства ScriptBlock. В следующем примере показано, как использовать свойство ScriptBlock для определения размера (в мегабайтах) всех файлов в каталоге.
Get-ChildItem | Measure-Object -Sum {$_.Length/1MB}Пример 10: Измерение хеш-таблиц
Начиная с PowerShell 6, Measure-Object поддерживает измерение входных данных хэш-таблицы. В следующем примере определяется наибольшее значение ключа num из трех объектов hashtable.
@{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
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Average
Указывает, что командлет отображает среднее значение указанных свойств.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Character
Указывает, что командлет подсчитывает количество символов во входных объектах.
Примечание
Переключатели Word, Char и Line подсчитывают внутри каждого входного объекта, а также поперек объекты ввода. См. пример 7.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-IgnoreWhiteSpace
Указывает, что командлет игнорирует пробелы при подсчете символов. По умолчанию пробелы не игнорируются.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает объекты для измерения. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты.
Когда вы используете параметр InputObject с Measure-Object, вместо передачи результатов команды по конвейеру в Measure-Object, InputObject > значение рассматривается как один объект.
Рекомендуется использовать Measure-Object в конвейере, если вы хотите измерить коллекцию объектов на основе того, имеют ли объекты определенные значения в определенных свойствах.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Line
Указывает, что командлет подсчитывает количество строк во входных объектах.
Примечание
Переключатели Word, Char и Line подсчитывают внутри каждого входного объекта, а также поперек объекты ввода. См. пример 7.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Maximum
Указывает, что командлет отображает максимальное значение указанных свойств.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Minimum
Указывает, что командлет отображает минимальное значение указанных свойств.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Property
Указывает одно или несколько свойств для измерения. Если вы не укажете никаких других мер, Measure-Object подсчитает объекты, имеющие указанные вами свойства.
Значение параметра Property может быть новым вычисляемым свойством. Вычисляемое свойство должно быть блоком скрипта. Дополнительные сведения см. в разделе about_Calculated_Properties.
- Тип :
PSPropertyExpression[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-StandardDeviation
Указывает, что командлет отображает стандартное отклонение значений указанных свойств.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Sum
Указывает, что командлет отображает сумму значений указанных свойств.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Word
Указывает, что командлет подсчитывает количество слов во входных объектах.
Примечание
Переключатели Word, Char и Line подсчитывают внутри каждого входного объекта, а также поперек объекты ввода. См. пример 7.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
Вы можете передавать объекты в этот командлет.
Выходы
GenericMeasureInfo
По умолчанию этот командлет возвращает объект GenericMeasureInfo.
TextMeasureInfo
При использовании параметра Word этот командлет возвращает объект TextMeasureInfo.
Примечания
PowerShell включает следующие псевдонимы для Measure-Object:
Все платформы:
measure
Начиная с PowerShell 7.3, Measure-Object больше не возвращает ошибку при обработке объекта, в котором отсутствует измеряемое свойство, если только вы не работаете в StrictMode. В StrictMode Measure-Object возвращает System.Management.Automation.PSArgumentException при обработке объекта, в котором отсутствует указанное свойство.