Syntax

Description

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.

Parameters

-AsString

Treats 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.

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-InputObject <psobject>

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

Get-Unique treats the input submitted by using
InputObject as a collection; it does not enumerate individual items
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

none

Accept Pipeline Input?

true (ByValue)

Accept Wildcard Characters?

false

-OnType

Returns only one object of each type.

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This command supports the common parameters: Verbose,
Debug, ErrorAction, ErrorVariable, OutBuffer, OutVariable,
WarningAction, and WarningVariable. For more information, see
about_CommonParameters.

Inputs and Outputs

The input type is the type of the objects that you can
pipe to the cmdlet. The return type is the type of the objects that
the cmdlet returns.

Inputs

System.Management.Automation.PSObject

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

Outputs

System.Management.Automation.PSObject

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

Notes

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.

The 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.

Example 2

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 eliminates duplicate
entries.

Example 3

Copy Code

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

Description

-----------

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

Example 4

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
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.