Get-Unique
从排序列表中返回唯一项。
语法
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
说明
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,后者只选择每个对象的 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 将通过 InputObject 提交的输入视为集合。 它不枚举集合中的各个项。 因为集合是单个项,所以通过使用 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 参数在列表中查找唯一项。