当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Measure-Object (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:25 浏览:15 分类:玩电脑

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 cmdlet 计算某些类型对象的属性值。 Measure-Object 根据命令中的参数执行三种类型的测量。

Measure-Object cmdlet 对对象的属性值执行计算。您可以使用Measure-Object对对象进行计数或对具有指定属性的对象进行计数。您还可以使用Measure-Object来计算最小值最大值总和标准偏差数值的strong>和平均值。对于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 文件,其中包含员工编号和每个员工的服务年限。表中的第一行是 EmpNoYears 的标题行。

当您使用 Import-Csv 导入文件时,结果是一个 PSCustomObject,其注释属性为 EmpNoYears >。您可以使用 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-ObjectAllStats 参数允许您一起测量所有统计信息。

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 支持测量哈希表输入。以下示例确定 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

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Average

指示 cmdlet 显示指定属性的平均值。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Character

指示 cmdlet 计算输入对象中的字符数。

笔记

WordCharLine 开关在每个输入对象内部以及进行计数em> 输入对象。参见实施例7。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-IgnoreWhiteSpace

指示 cmdlet 忽略字符计数中的空格。默认情况下,不会忽略空格。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-InputObject

指定要测量的对象。输入包含对象的变量,或键入获取对象的命令或表达式。

当您将 InputObject 参数与 Measure-Object 一起使用时,不是通过管道将命令结果传输到 Measure-ObjectInputObject 值被视为单个对象。

如果您想要根据对象在定义的属性中是否具有特定值来测量对象集合,建议您在管道中使用 Measure-Object

类型 :

PS对象

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Line

指示 cmdlet 计算输入对象中的行数。

笔记

WordCharLine 开关对每个输入对象内部以及进行计数em> 输入对象。参见实施例7。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Maximum

指示 cmdlet 显示指定属性的最大值。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Minimum

指示 cmdlet 显示指定属性的最小值。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Property

指定要测量的一个或多个属性。如果您未指定任何其他度量,则 Measure-Object 将对具有您指定的属性的对象进行计数。

Property 参数的值可以是新的计算属性。计算属性必须是脚本块。有关详细信息,请参阅 about_Calculated_Properties。

类型 :

PS属性表达式[]

位置:

0

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-StandardDeviation

指示 cmdlet 显示指定属性值的标准差。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Sum

指示 cmdlet 显示指定属性值的总和。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Word

指示 cmdlet 计算输入对象中的单词数。

笔记

WordCharLine 开关对每个输入对象内部以及进行计数em> 输入对象。参见实施例7。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

PSObject

您可以通过管道将对象传递到此 cmdlet。

输出

通用测量信息

默认情况下,此 cmdlet 返回一个 GenericMeasureInfo 对象。

文本测量信息

当您使用 Word 参数时,此 cmdlet 将返回 TextMeasureInfo 对象。

笔记

PowerShell 包含以下 Measure-Object 别名:

  • 所有平台:

      measure

    从 PowerShell 7.3 开始,处理缺少所测量属性的对象时,Measure-Object 不再返回错误,除非您在 StrictMode 下运行。在 StrictMode 中,当处理缺少指定属性的对象时,Measure-Object 将返回 System.Management.Automation.PSArgumentException

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯