Get-Unique

从排序列表中返回唯一项。

语法

Get-Unique
   [-InputObject <PSObject>]
   [-AsString]
   [<CommonParameters>]
Get-Unique
   [-InputObject <PSObject>]
   [-OnType]
   [<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 属性来确定 $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-UniqueOnType 参数指示 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-UniqueProcessName 值视为字符串。 如果没有此参数,Get-Unique 会将 ProcessName 值视为对象,并且只返回该对象的一个实例,即列表中的第一个进程名称。

参数

-AsString

指示此 cmdlet 使用数据作为字符串。 如果没有此参数,数据将被视为对象,因此,将同一类型的对象集合提交到 Get-Unique(例如文件集合)时,它只返回一个(第一个)。 可以使用此参数查找对象属性的唯一值,例如文件名。

类型:SwitchParameter
Position:Named
默认值:None
必需: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

输入

PSObject

可以通过管道将任何类型的对象传递给此 cmdlet。

输出

PSObject

此 cmdlet 返回其无重复项的输入对象。

备注

Windows PowerShell 包含以下 Get-Unique别名:

  • gu

有关详细信息,请参阅 about_Aliases

若要对列表进行排序,请使用 Sort-Object。 还可以使用 Sort-Object 参数来查找列表中的唯一项。