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
匯入檔案時,結果會是具有 EmpNo 和 Years附注屬性的 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 會計算輸入物件中的字元數。
注意
類型: | 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 會計算輸入物件中的行數。
注意
類型: | 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 會計算輸入物件中的字數。
注意
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將物件傳送至此 Cmdlet。
輸出
根據預設,此 Cmdlet 會傳回 GenericMeasureInfo 物件。
當您使用 Word 參數時,這個 Cmdlet 會傳回 TextMeasureInfo 物件。
備註
PowerShell 包含下列的 Measure-Object
別名:
- 所有平臺:
measure
從 PowerShell 7.3 開始,除非您在 StrictMode中執行,否則處理遺漏所測量屬性的物件時,Measure-Object
不再傳回錯誤。 在 StrictMode中,當處理遺漏指定屬性的物件時,Measure-Object
會傳回 System.Management.Automation.PSArgumentException
。