計算或計算對象的數值屬性,如字符、單詞和字符串對象中的行數,可能會令人沮喪。幸運的是,PowerShell Measure-Object
cmdlet能夠勝任這項任務。
在這個教程中,您將學習到如何利用Measure-Object
cmdlet自動測量PowerShell中對象的屬性。
立即開始,提升您的對象測量技能!
先備條件
本教程是一個實踐演示。要跟隨操作,您需要一個已安裝PowerShell的系統。本教程使用的是安裝了PowerShell v7的Windows 10。
計算文件和文件夾
了解目錄中文件和文件夾的數量在各種情況下都可能有所幫助。一個例子是當您需要監視文件夾的大小或檢查目錄中的文件數量時。
Measure-Object
cmdlet會計算目錄中文件和文件夾的數量。確切的計數有助於您更好地管理和優化系統資源。
要了解Measure-Object
cmdlet如何計算文件和文件夾的數量:
1. 打開 PowerShell 並執行以下 Get-ChildItem
命令以計算並返回當前目錄中的總文件和文件夾數量(Measure-Object
)。
以下輸出表示當前目錄中有 4852 個文件和文件夾。

也許您想要遞歸地包含目錄樹中的所有文件和子目錄。如果是這樣,請附加
-Recurse
參數,如下所示。Get-ChildItem -Recurse | Measure-Object
2. 接下來,執行與步驟一中相同的命令。但這次,在命令的末尾添加 -Directory
參數,以僅計算工作目錄中的總目錄數量。
正如您在下面看到的,總數現在更低(135),因為該命令僅計算目錄,排除所有其他對象。

3. 現在,執行以下命令以計算當前目錄中的可執行文件(.exe
)數量。
-Filter
參數告訴 Get-ChildItem
命令讓結果進行篩選,僅返回指定擴展名的文件(即,*.txt
、*.jpg
、*.csv
)。

測量檔案大小
測量物件的長度和大小可以幫助更好地管理您的系統,因為大型檔案會影響系統的性能。除了計算屬性之外,您還可以使用 Measure-Object
命令來測量物件的長度和大小。
運行以下代碼以檢索當前目錄中的所有檔案( Get-ChildItem
)並顯示( Write-Host
)它們的默認字節長度。
以下代碼將每個測量輸出到控制台,包括最小和最大檔案大小、平均檔案大小、檔案大小總和和檔案總數。
下面,您可以看到以字節為單位顯示的大小。

也許將代碼粘貼到控制台並不是您的菜。如果是這樣,請將代碼保存到一個 PowerShell 腳本文件中並運行它。
現在,運行以下命令以獲取當前目錄中大小等於最大文件大小的文件,其中 (Where-Object
) 文件的大小 ($_.Length
) 等於最大文件大小 ($files.Maximum
)。
以下輸出顯示了當前目錄中最大文件的名稱。

測量文本文件內容
如果您需要測量文本文件的行數、詞數或字符數,則可能需要使用 Measure-Object
命令,該命令有許多其他參數可用於測量文本文件內容。
運行下面的代碼來執行以下操作:使用-Character
、-Line
和-Word
對文本文件的內容進行測量(Measure-Object
),並輸出(Write-Host
)測量結果。
請確保將$file_path
和$file_content
變量的值更改為您自己的值。

測量布林值
布林值是只能為true或false的值。在PowerShell中,布林值常用於控制腳本的流程、確定條件(true或false)或指示命令的成功或失敗。
測量布林值在各種情況下都很有用,例如:
- 計算數據集中true或false值的數量。
- 確定true值相對於總值的百分比。
這些信息有助於在處理或分析數據時做出明智的決策。
要查看如何測量布林值的工作原理:
執行以下命令來計算陣列($values
)中布林值(默認為true值)的總和。
以下,布林值的總數為九(9),而總和為五(5),因為僅計算了true值。
那麼false值呢?跳到下一步,執行更多命令。

現在,運行以下代碼,從布林值的總數($count
)中減去true值的總和($trueCount
)。方程式的差異就是false值的總數($falseCount
)。

如果測量布林值是一項日常任務,您可以創建一個可以隨時調用的函數來執行該任務。
測量哈希表
PowerShell 中的哈希表(一組鍵-值對的集合)允許您快速高效地存儲和檢索數據。如果您需要哈希表中的項目數量或最大值和最小值,可以使用 Measure-Object
命令來測量您的哈希表。
運行以下命令在您的哈希表($MyHastable
)中查找 Num
屬性的 -Minimum
和 -Maximum
值。

測量標準差
檢閱資料集可能會變得冗長,但不一定要如此。當了解資料集數值的分佈時,測量標準差是很方便的。您也可以識別任何影響結果的離群值或不尋常的資料點。
標準差測量了數據集數值相對於平均值的變異或分散。此測量是通過計算數據的方差的平均值來計算的,而方差則是數據與平均值之間差的平方的平均值。
運行下面的代碼以計算並顯示存儲在$Numbers
變量中的數組的-Average
和-StandardDeviation
。
在統計學中,平均值衡量了中心趨勢,描述了資料集的典型或最具代表性的值。
平均值是通過將資料集中所有數字相加並除以總數來計算的。在這個例子中,數據集為{10
, 20
, 30
, 40
, 50
},總和為150,集合中有五個數字(5
)。
因此,以下是計算的平均值,即30
。
另一方面,標準差衡量了一組數據的分佈或散佈。標準差的計算如下:

結論
測量數據是一項重要任務,而 PowerShell 的 Measure-Object cmdlet 是完成該任務的強大工具。在這個教程中,您已經學會了如何以多種方式測量數據。無論您是在處理文件、文本文件內容、布林值、字符串、數組還是哈希表,對它們進行測量都可以提供寶貴的見解。
現在,您可以輕鬆計算您的數據的平均值、最大值和最小值,並測量您的數據的變化或傳播。有了這些功能,您可以更深入地了解您的數據,並根據分析做出知情的決策。
憑藉這些新知識,為什麼不擴展您的 PowerShell 工具包,並將 Compare-Object 添加到您的工具箱中呢?
Source:
https://adamtheautomator.com/powershell-measure-object/