Get-Unique
Additional Resources for Get-Unique |
Listing the Unique Members of a Collection http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/get-unique.mspx
|
SYNOPSIS
Returns the unique items from a sorted list.
SYNTAX
Get-Unique [-inputObject <psobject>] [-asString] [<CommonParameters>]
Get-Unique [-inputObject <psobject>] [-onType] [<CommonParameters>]
DETAILED 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
-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 doesn't 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 |
|
Accept pipeline input? |
true (ByValue) |
Accept wildcard characters? |
false |
-asString <SwitchParameter>
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 |
|
Accept pipeline input? |
false |
Accept wildcard characters? |
false |
-onType <SwitchParameter>
Returns only one object of each type.
Required? |
false |
Position? |
named |
Default value |
|
Accept pipeline input? |
false |
Accept wildcard characters? |
false |
<CommonParameters>
This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. For more information, type, "get-help about_commonparameters".
INPUT TYPE
Any
RETURN TYPE
Any
NOTES
For more information, type "Get-Help Get-Unique -detailed". For technical information, type "Get-Help Get-Unique -full".
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.
When specifying multiple values for a parameter, use commas to separate the values. For example, "<parameter-name> <value1>, <value2>".
You can also refer to Get-Unique by its built-in alias, "gu". For more information, see About_Alias.
EXAMPLE 1
$a = $(foreach ($line in get-content C:\Test1\File1.txt) {$line.tolower().split(" ")}) | sort | get-unique
$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 lower case 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
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-Objectcmdlet to be sorted, and then pipes them to Get-Unique, which eliminates duplicate entries.
EXAMPLE 3
get-childitem | sort-object {$_.GetType()} | unique -OnType
This command uses the Get-ChildItemcmdlet 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 sends the results to Get-Unique. The OnType parameter directs Get-Unique to return only one object of each type.
EXAMPLE 4
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-Processcommand 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-Objectcmdlet, 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.
RELATED LINKS