Get-Unique
從已排序的清單傳回唯一專案。
語法
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
Description
Get-Unique
Cmdlet 會將排序列表中的每個專案與下一個項目進行比較、消除重複專案,並且只傳回每個專案的一個實例。 清單必須排序,Cmdlet 才能正常運作。
根據預設,Get-Unique
區分大小寫。 因此,只有字元大小寫不同的字串會被視為唯一的。
範例
範例 1:取得文字檔中的唯一單字
這些命令會在文字文件中尋找唯一字數。
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.tolower().split(" ")
}) | Sort-Object | Get-Unique
$A.count
第一個命令會取得 File.txt
檔案的內容。 它會將每一行文字轉換成小寫字母,然後將每個單字分割成空格的個別行(" "
)。 然後,它會依字母順序排序產生的清單(預設值),並使用 Get-Unique
Cmdlet 來消除任何重複的單字。 結果會儲存在 $A
變數中。
第二個命令會使用 $A
中字串集合的 Count 屬性來判斷 $A
中的項目數目。
範例 2:取得陣列中的唯一整數
此命令會尋找整數集的唯一成員。
1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | Sort-Object | Get-Unique
1
3
4
5
12
23
4643
第一個命令會採用在命令行輸入的整數陣列,將它們傳送至要排序的 Sort-Object
Cmdlet,然後將它們管線傳送至 Get-Unique
,以排除重複的專案。
範例 3:取得目錄中的唯一物件類型
此命令會使用 Get-ChildItem
Cmdlet 來擷取本機目錄的內容,其中包含檔案和目錄。
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
管線運算子 (|
) 會將結果傳送至 Sort-Object
Cmdlet。
$_.GetType()
語句會將 GetType 方法套用至每個檔案或目錄。 然後,Sort-Object
依類型排序專案。 另一個管線運算子會將結果傳送至 Get-Unique
。
OnType 參數會指示 Get-Unique
只傳回每個類型的一個物件。
範例 4:取得唯一進程
此命令會取得計算機上執行且消除重複項目的進程名稱。
Get-Process | Sort-Object | Select-Object processname | Get-Unique -AsString
Get-Process
命令會取得電腦上的所有進程。 管線運算符 (|
) 會將結果傳遞至 Sort-Object
,根據預設,會依 ProcessName依字母順序排序進程。 結果會透過管線傳送至 Select-Object
Cmdlet,而此 Cmdlet 只會選取每個物件的 ProcessName 屬性值。 然後,結果會透過管道傳送至 Get-Unique
,以消除重複專案。
AsString 參數會指示 Get-Unique
將 processName 值視為字串。
如果沒有此參數,Get-Unique
會將 ProcessName 值視為物件,而且只會傳回一個對象實例,也就是清單中的第一個進程名稱。
範例 5:使用區分大小寫的比較來取得唯一字串
此範例會使用不區分大小寫的比較,從字串陣列取得唯一字串。
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
範例 6:使用不區分大小寫的比較來取得唯一字串
此範例會使用不區分大小寫的比較,從字串陣列取得唯一字串。
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
參數
-AsString
指出此 Cmdlet 會使用數據做為字串。 如果沒有此參數,數據會視為物件,因此當您將相同類型的物件集合提交至 Get-Unique
時,例如檔案集合,只會傳回一個 (第一個)。 您可以使用此參數來尋找物件屬性的唯一值,例如檔名。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CaseInsensitive
根據預設,Get-Unique
區分大小寫。 當您使用此參數時,Cmdlet 會使用不區分大小寫的比較。
此參數已在PowerShell 7.4中新增。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定 Get-Unique
的輸入。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。
此 Cmdlet 會將使用 inputObj ect 提交的輸入視為集合。 它不會列舉集合中的個別專案。 因為集合是單一專案,因此使用 InputObject 送出 的輸入一律會傳回不變。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-OnType
表示此 Cmdlet 只會傳回每個類型的一個物件。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將任何類型的物件傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回其輸入物件,而不會重複。
備註
PowerShell 包含下列 Get-Unique
別名:
- 所有平臺:
gu
如需詳細資訊,請參閱 about_Aliases。
若要排序列表,請使用 Sort-Object
。 您也可以使用 Sort-Object
的 Unique 參數,在清單中尋找唯一的專案。