Get-Unique
從排序清單中回傳獨特項目。
語法
AsString (預設值)
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
UniqueByType
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
Description
該 Get-Unique 指令本會將排序清單中的每個項目與下一個項目比較,消除重複,並只回傳每個項目的一個實例。 清單必須先排序,指令碼才能正常運作。
預設情況下, 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 待排序的指令檔,再傳入 Get-Unique,這樣可以消除重複的條目。
範例 3:在目錄中取得唯一物件類型
此指令使用 Get-ChildItem cmdlet 來擷取本地目錄的內容,該目錄包含檔案與目錄。
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
管線運算子(|)會將結果傳送給指令集。Sort-Object 此 $_.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 |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
AsString
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-CaseInsensitive
預設情況下, Get-Unique 是區分大小寫的。 當您使用此參數時,Cmdlet 會使用不區分大小寫的比較。
此參數已在PowerShell 7.4中新增。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定 的 Get-Unique輸入。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。
此 cmdlet 將使用 InputObject 提交的輸入視為集合。 它不會列舉收藏中的個別項目。 由於集合是單一項目,使用 InputObject 提交的輸入總是不改變地回傳。
參數屬性
| 類型: | PSObject |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-OnType
表示此 cmdlet 僅回傳每種類型的一個物件。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
UniqueByType
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
PSObject
你可以將任何類型的物件管道傳送到這個指令檔。
輸出
PSObject
此 cmdlet 會回傳其輸入物件,且不重複。
備註
PowerShell 包含下列 Get-Unique的別名:
- 所有平臺:
gu
如需詳細資訊,請參閱 about_Aliases。
要排序清單,請使用 Sort-Object。 你也可以用 UniqueSort-Object 參數來尋找清單中的獨特項目。