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
cmdlet 计算特定类型的对象的属性值。
Measure-Object
执行三种类型的度量,具体取决于命令中的参数。
Measure-Object
cmdlet 对对象的属性值执行计算。 可以使用 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
导入文件时,结果为带有 EmpNo 和 Years 的 note 属性的 PSCustomObject。
可以使用 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 开始,Measure-Object
的 AllStats 参数允许你一起度量所有统计信息。
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 属性来确定目录中所有文件的大小(以 MB 为单位)。
Get-ChildItem | Measure-Object -Sum {$_.Length/1MB}
示例 10:度量哈希表
从 PowerShell 6 开始,Measure-Object
支持对 hashtable 输入进行度量。 以下示例确定 3 个 hashtable 对象的 num
键的最大值。
@{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 参数。 以下示例确定所有进程使用的 CPU 的标准偏差。 较大的偏差表示少量进程在占用大部分 CPU。
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
指示该 cmdlet 显示指定属性的所有统计信息。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Average
指示该 cmdlet 显示指定属性的平均值。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Character
指示该 cmdlet 对输入对象中的字符进行计数。
注意
Word、Char 和 Line 会分别对每个输入对象内以及跨输入对象进行计数。 请参阅示例 7。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-IgnoreWhiteSpace
指示该 cmdlet 会在字符计数中忽略空格。 默认情况下,不忽略空格。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定要测量的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
将 InputObject 参数用于 Measure-Object
时,InputObject 值将被视为单个对象,而不是通过管道将命令结果传递给 Measure-Object
。
如果要根据对象是否具有定义的属性中的特定值来度量对象的集合,建议在管道中使用 Measure-Object
。
类型: | PSObject |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Line
指示该 cmdlet 对输入对象中的行进行计数。
注意
Word、Char 和 Line 会分别对每个输入对象内以及跨输入对象进行计数。 请参阅示例 7。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Maximum
指示该 cmdlet 显示指定属性的最大值。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Minimum
指示该 cmdlet 显示指定属性的最小值。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Property
指定要度量的一个或多个属性。 如果未指定任何其他度量值,Measure-Object
则对具有指定属性的对象进行计数。
Property 参数的值可以是新的计算属性。 计算属性必须是脚本块。 有关详细信息,请参阅 about_Calculated_Properties。
类型: | PSPropertyExpression[] |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-StandardDeviation
指示该 cmdlet 显示指定属性的值的标准偏差。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Sum
指示该 cmdlet 显示指定属性的值的总和。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Word
指示该 cmdlet 对输入对象中的单词进行计数。
注意
Word、Char 和 Line 会分别对每个输入对象内以及跨输入对象进行计数。 请参阅示例 7。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将对象传递给此 cmdlet。
输出
默认情况下,此 cmdlet 返回 GenericMeasureInfo 对象。
当使用 Word 参数时,此 cmdlet 返回 TextMeasureInfo 对象。
备注
PowerShell 包含以下 Measure-Object
别名:
- 所有平台:
measure
从 PowerShell 7.3 开始,Measure-Object
在处理缺少所测量属性的对象时不再返回错误,除非在 StrictMode 中运行。 在 StrictMode 中,Measure-Object
在处理缺少指定属性的对象时会返回 System.Management.Automation.PSArgumentException
。