Tutorials  PowerShell Cmdlet Help for Get-Unique


Returns the unique items from a sorted list.

Get-Unique [-AsString] [-InputObject ] []

Get-Unique [-OnType] [-InputObject ] []

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.

-AsString []
Treats the data as a string. Without this parameter, data is treated as an object, so when you submit a collect
ion 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.

Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false

Accepts input for Get-Unique. Enter a variable that contains the objects or type a command or expression that g
ets the objects.

Get-Unique treats the input submitted by using InputObject as a collection; it does not enumerate individual it
ems in the collection. Because the collection is a single item, input submitted by using InputObject is always
returned unchanged.

Required? false
Position? named
Default value
Accept pipeline input? true (ByValue)
Accept wildcard characters? false

-OnType []
Returns only one object of each type.

Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false

This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer and OutVariable. For more information, type,
"get-help about_commonparameters".

You can pipe any type of object to Get-Unique.

The type of object that Get-Unique returns is determined by the input.


You can also refer to Get-Unique by its built-in alias, "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.

-------------------------- EXAMPLE 1 --------------------------

C:\PS>$a = $(foreach ($line in get-content C:\Test1\File1.txt) {$line.tolower().split(" ")}) | sort | get-unique

C:\PS> $a.count

These commands find the number of unique words in a text file.

The first command gets the content of the File.txt file. It converts each line of text to lowercase letters and the
n splits each word onto a separate line at the space (" "). Then, it sorts the resulting list alphabetically (the d
efault) 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

-------------------------- EXAMPLE 2 --------------------------

C:\PS>1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | sort-object | Get-Unique

This command finds the unique members of the set of integers. 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 elim
inates duplicate entries.

-------------------------- EXAMPLE 3 --------------------------

C:\PS>get-childitem | sort-object {$_.GetType()} | unique -OnType

This command uses the Get-ChildItem cmdlet to retrieve the contents of the local directory, which includes files an
d directories. The 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 o
perator sends the results to Get-Unique. The OnType parameter directs Get-Unique to return only one object of each

-------------------------- EXAMPLE 4 --------------------------

C:\PS>get-process | sort-object | select processname | get-unique -asstring

This command gets the names of processes running on the computer with duplicates eliminated.

The Get-Process command gets all of the processes on the computer. The pipeline operator (|) passes the result to S
ort-Object, which, by default, sorts the processes alphabetically by ProcessName. The results are piped to the Sele
ct-Object cmdlet, which selects only the values of the ProcessName property of each object. The results are then pi
ped to Get-Unique to eliminate duplicates.

The AsString parameter tells Get-Unique to treat the ProcessName values as strings. Without this parameter, Get-Uni
que treats the ProcessName values as objects and returns only one instance of the object, that is, the first proces
s name in the list.

Online version: http://go.microsoft.com/fwlink/?LinkID=113335