共用方式為


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>]

Description

Measure-Object Cmdlet 會計算特定物件類型的屬性值。 Measure-Object 會根據命令中的參數來執行三種類型的測量。

Measure-Object Cmdlet 會對 物件的屬性值執行計算。 您可以使用 Measure-Object 來計算具有指定 Property的物件或計數物件。 您也可以使用 Measure-Object 來計算 最小值最大值總和StandardDeviation數值的平均。 針對 String 物件,您也可以使用 Measure-Object 來計算行數、單字和字元數。

範例

範例 1:計算目錄中的檔案和資料夾

此命令會計算目前目錄中的檔案和資料夾。

Get-ChildItem | Measure-Object

範例 2:測量目錄中的檔案

此命令會顯示 最小最大值,以及目前目錄中所有檔案大小 Sum,以及目錄中檔案的平均大小。

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 匯入檔案時,結果會是具有 EmpNoYears附注屬性的 PSCustomObject。 您可以使用 Measure-Object 來計算這些屬性的值,就像物件的任何其他屬性一樣。

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

範例 6:測量布爾值

此範例示範 Measure-Object 如何測量布爾值。 在此情況下,它會使用 PSIsContainerBoolean 屬性來測量目前目錄中資料夾 (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 開始,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 屬性來判斷目錄中所有檔案的大小,以 MB 為單位。

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

範例 10:測量哈希表

從 PowerShell 6 開始,Measure-Object 支援測量 哈希表 輸入。 下列範例會決定 3 個 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 會計算輸入物件中的字元數。

注意

WordCharLine 會切換每個輸入物件 內部 計數,以及跨 輸入物件 。 請參閱範例 7。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-IgnoreWhiteSpace

表示 Cmdlet 會忽略字元計數中的空格符。 根據預設,不會忽略空格符。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定要測量的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。

當您搭配 使用 Measure-Object 參數時,Measure-Object 值會視為單一物件,而不是將命令結果

如果您想要根據物件是否具有定義屬性中的特定值來測量物件的集合,建議您在管線中使用 Measure-Object

類型:PSObject
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Line

指出 Cmdlet 會計算輸入物件中的行數。

注意

WordCharLine 會切換每個輸入物件 內部 計數,以及跨 輸入物件 。 請參閱範例 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 會計算輸入物件中的字數。

注意

WordCharLine 會切換每個輸入物件 內部 計數,以及跨 輸入物件 。 請參閱範例 7。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSObject

您可以使用管線將物件傳送至此 Cmdlet。

輸出

GenericMeasureInfo

根據預設,此 Cmdlet 會傳回 GenericMeasureInfo 物件。

TextMeasureInfo

當您使用 Word 參數時,這個 Cmdlet 會傳回 TextMeasureInfo 物件。

備註

PowerShell 包含下列的 Measure-Object別名:

  • 所有平臺:
    • measure

從 PowerShell 7.3 開始,除非您在 StrictMode中執行,否則處理遺漏所測量屬性的物件時,Measure-Object 不再傳回錯誤。 在 StrictMode中,當處理遺漏指定屬性的物件時,Measure-Object 會傳回 System.Management.Automation.PSArgumentException