如何從 PowerShell 陣列中刪除重複值

  1. 使用 Select-Object 從 PowerShell 陣列中刪除重複值
  2. 使用 Sort-Object 從 PowerShell 陣列中刪除重複值
  3. 使用 Get-Unique 從 PowerShell 陣列中刪除重複項目
  4. 使用 Hashtable 從 PowerShell 陣列中刪除重複項目
  5. 結論
如何從 PowerShell 陣列中刪除重複值

陣列是 PowerShell 中的基本資料結構,允許您存儲項目的集合,無論這些項目是相同類型還是不同類型。在各種腳本場景中,您可能會遇到需要從陣列中消除重複項目的情況。

本教程將介紹從 PowerShell 陣列中刪除重複項目的不同方法。

使用 Select-Object 從 PowerShell 陣列中刪除重複值

Select-Object cmdlet 用於選擇物件或物件集合的指定屬性。您還可以在陣列的指定位置選擇唯一物件。

-Unique 參數指定如果物件中存在相同的屬性和值,則僅選擇一個成員。它是區分大小寫的,因此僅在字母大小寫上有所不同的字串也被視為唯一值。

我們創建了一個包含不同大小寫的重複項目的陣列 $data

$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")

以下示例從陣列中選擇唯一值並將其保存到 $data 變量中。結果,重複元素將從陣列中刪除。

命令:

$data = $data | Select-Object -Unique
$data

輸出:

powershell
arrays
Arrays
PowerShell

它刪除了重複的字串 "powershell",但不會刪除 "PowerShell",因為字串中有一個大寫字母。

使用 Sort-Object 從 PowerShell 陣列中刪除重複值

Sort-Object cmdlet 根據物件的屬性值對物件進行升序或降序排序。使用 Sort-Object 時,您也可以使用 -Unique 參數從物件中刪除重複項目。

但它是不區分大小寫的,因此僅在字母大小寫上有所不同的字串也被視為相同。以下示例從陣列中刪除重複項目並將其保存到變量 $a 中。

命令:

$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a

輸出:

Arrays
PowerShell

它刪除了 "Arrays""PowerShell",即使它們僅在字母大小寫上不同。如果您想使 Sort-Object 區分大小寫,您可以使用 -CaseSensitive 參數。

命令:

$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b

輸出:

arrays
Arrays
powershell
PowerShell

現在,輸出僅刪除 "powershell",因為它是唯一有重複(根據大小寫)的變量。

使用 Get-Unique 從 PowerShell 陣列中刪除重複項目

Get-Unique cmdlet 從排序過的列表中獲取唯一項目。它將排序列表中的每個項目與下一項目進行比較,刪除重複項目,並僅返回每個項目的一個成員。

此 cmdlet 僅在列表已排序的情況下有效。您可以使用 Sort-Object cmdlet 根據屬性值對物件進行排序。

以下示例使用 Get-Unique cmdlet 在使用 Sort-Object 對陣列元素進行排序後,從陣列 $sort 中刪除重複項目。

命令:

$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c

輸出:

Arrays
arrays
PowerShell
powershell

在此輸出中,"powershell" 被刪除。

Get-Unique 是區分大小寫的,因此僅在字母大小寫上有所不同的字串也被視為唯一值。這樣,您可以輕鬆從 PowerShell 陣列中刪除重複元素。

使用 Hashtable 從 PowerShell 陣列中刪除重複項目

PowerShell 允許您有效地利用 Hashtable 來刪除重複項目。Hashtable 存儲鍵值對,其中鍵是唯一的,通過創建 Hashtable 並將陣列項目用作鍵,您可以自動刪除重複項目。

以下示例初始化一個空的 Hashtable$uniqueHash),然後遍歷陣列,將每個項目設置為 Hashtable 中的鍵。由於鍵必須是唯一的,因此重複項目會被自動消除。

結果存儲在 $uniqueArray 變量中。

$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray

輸出:

powershell
arrays

在此輸出中,重複項目使用 Hashtable 刪除並打印剩餘值。請注意,使用 Hashtable 刪除重複項目並不考慮值的大小寫敏感性。

結論

在 PowerShell 中,管理陣列中的重複值是一項常見的任務,本文介紹了幾種實現此目的的方法。通過使用 Select-ObjectSort-ObjectGet-Unique cmdlet,以及利用 Hashtable,您可以根據您的具體需求量身定制方法,無論您需要區分大小寫還是不區分大小寫的重複值刪除。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell Array