| external help file | Microsoft.PowerShell.Commands.Utility.dll-Help.xml | |
|---|---|---|
| Locale | en-US | |
| Module Name | Microsoft.PowerShell.Utility | |
| ms.date | 08/18/2023 | |
| online version | https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/get-unique?view=powershell-7.6&WT.mc_id=ps-gethelp | |
| schema | 2.0.0 | |
| aliases |
|
|
| title | Get-Unique |
Returns unique items from a sorted list.
Get-Unique [-InputObject <PSObject>] [-AsString] [-CaseInsensitive] [<CommonParameters>]
Get-Unique [-InputObject <PSObject>] [-OnType] [-CaseInsensitive] [<CommonParameters>]
The Get-Unique cmdlet compares each item in a sorted list to the next item, eliminates duplicates,
and returns only one instance of each item. The list must be sorted for the cmdlet to work properly.
By default, Get-Unique is case-sensitive. As a result, strings that differ only in character
casing are considered to be unique.
These commands find the number of unique words in a text file.
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.ToLower().Split(" ")
}) | Sort-Object | Get-Unique
$A.CountThe first command gets the content of the File.txt file. It converts each line of text to
lowercase letters and then splits each word onto a separate line at the space (" "). Then, it
sorts the resulting list alphabetically (the default) and uses the Get-Unique cmdlet to eliminate
any duplicate words. The results are stored in the $A variable.
The second command uses the Count property of the collection of strings in $A to determine how
many items are in $A.
This command finds the unique members of the set of integers.
1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | Sort-Object | Get-Unique1
3
4
5
12
23
4643
The first command takes an array of integers typed at the command line, pipes them to the
Sort-Object cmdlet to be sorted, and then pipes them to Get-Unique, which eliminates duplicate
entries.
This command uses the Get-ChildItem cmdlet to retrieve the contents of the local directory, which
includes files and directories.
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnTypeThe pipeline operator (|) sends the results to the Sort-Object cmdlet. The $_.GetType()
statement applies the GetType method to each file or directory. Then, Sort-Object sorts the
items by type. Another pipeline operator sends the results to Get-Unique. The OnType parameter
directs Get-Unique to return only one object of each type.
This command gets the names of processes running on the computer with duplicates eliminated.
Get-Process | Sort-Object | Select-Object ProcessName | Get-Unique -AsStringThe Get-Process command gets all of the processes on the computer. The pipeline operator (|)
passes the result to Sort-Object, which, by default, sorts the processes alphabetically by
ProcessName. The results are piped to the Select-Object cmdlet, which selects only the values
of the ProcessName property of each object. The results are then piped to Get-Unique to
eliminate duplicates.
The AsString parameter tells Get-Unique to treat the ProcessName values as strings.
Without this parameter, Get-Unique treats the ProcessName values as objects and returns only
one instance of the object, that is, the first process name in the list.
This example uses case-insensitive comparisons to get unique strings from an array of strings.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Uniqueaa
Aa
bb
Bb
This example uses case-insensitive comparisons to get unique strings from an array of strings.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitiveaa
Bb
Indicates that this cmdlet uses the data as a string. Without this parameter, data is treated as an
object, so when you submit a collection of objects of the same type to Get-Unique, such as a
collection of files, it returns just one (the first). You can use this parameter to find the unique
values of object properties, such as the file names.
Type: System.Management.Automation.SwitchParameter
Parameter Sets: AsString
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: FalseBy default, Get-Unique is case-sensitive. When you use this parameter, the cmdlet uses
case-insensitive comparisons.
This parameter was added in PowerShell 7.4.
Type: System.Management.Automation.SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: FalseSpecifies input for Get-Unique. Enter a variable that contains the objects or type a command or
expression that gets the objects.
This cmdlet treats the input submitted using InputObject as a collection. It doesn't enumerate individual items in the collection. Because the collection is a single item, input submitted using InputObject is always returned unchanged.
Type: System.Management.Automation.PSObject
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: FalseIndicates that this cmdlet returns only one object of each type.
Type: System.Management.Automation.SwitchParameter
Parameter Sets: UniqueByType
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: FalseThis cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
You can pipe any type of object to this cmdlet.
This cmdlet returns its input objects without duplicates.
PowerShell includes the following aliases for Get-Unique:
- All platforms:
gu
For more information, see about_Aliases.
To sort a list, use Sort-Object. You can also use the Unique parameter of Sort-Object to
find the unique items in a list.