Get-Unique
Devuelve elementos únicos de una lista ordenada.
Sintaxis
AsString (Es el valor predeterminado).
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
UniqueByType
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
Description
El cmdlet Get-Unique compara cada elemento de una lista ordenada con el elemento siguiente, elimina los duplicados y devuelve solo una instancia de cada elemento. La lista debe ordenarse para que el cmdlet funcione correctamente.
De forma predeterminada, Get-Unique distingue mayúsculas de minúsculas. Como resultado, las cadenas que solo difieren en mayúsculas y minúsculas de caracteres se consideran únicas.
Ejemplos
Ejemplo 1: Obtener palabras únicas en un archivo de texto
Estos comandos encuentran el número de palabras únicas en un archivo de texto.
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.ToLower().Split(" ")
}) | Sort-Object | Get-Unique
$A.Count
El primer comando obtiene el contenido del archivo File.txt. Convierte cada línea de texto en letras minúsculas y, a continuación, divide cada palabra en una línea independiente en el espacio (" "). A continuación, ordena la lista resultante alfabéticamente (el valor predeterminado) y usa el cmdlet Get-Unique para eliminar las palabras duplicadas. Los resultados se almacenan en la variable $A.
El segundo comando usa la propiedad count de la colección de cadenas de $A para determinar cuántos elementos hay en $A.
Ejemplo 2: Obtener enteros únicos en una matriz
Este comando busca los miembros únicos del conjunto de enteros.
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
El primer comando toma una matriz de enteros tipados en la línea de comandos, los canaliza al cmdlet Sort-Object que se va a ordenar y, a continuación, los canaliza a Get-Unique, lo que elimina entradas duplicadas.
Ejemplo 3: Obtención de tipos de objetos únicos en un directorio
Este comando usa el cmdlet Get-ChildItem para recuperar el contenido del directorio local, que incluye archivos y directorios.
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
El operador de canalización (|) envía los resultados al cmdlet Sort-Object. La instrucción $_.GetType() aplica el método GetType a cada archivo o directorio. A continuación, Sort-Object ordena los elementos por tipo. Otro operador de canalización envía los resultados a Get-Unique. El parámetro OnType dirige Get-Unique para devolver solo un objeto de cada tipo.
Ejemplo 4: Obtención de procesos únicos
Este comando obtiene los nombres de los procesos que se ejecutan en el equipo con duplicados eliminados.
Get-Process | Sort-Object | Select-Object ProcessName | Get-Unique -AsString
El comando Get-Process obtiene todos los procesos del equipo. El operador de canalización (|) pasa el resultado a Sort-Object, que, de forma predeterminada, ordena alfabéticamente los procesos mediante ProcessName. Los resultados se canalizan al cmdlet Select-Object, que selecciona solo los valores de la propiedad ProcessName de cada objeto. A continuación, los resultados se canalizan a Get-Unique para eliminar duplicados.
El parámetro AsString indica Get-Unique que trate los valores de ProcessName como cadenas.
Sin este parámetro, Get-Unique trata los valores de ProcessName como objetos y devuelve solo una instancia del objeto, es decir, el nombre del primer proceso de la lista.
Ejemplo 5: Usar comparaciones que distinguen mayúsculas de minúsculas para obtener cadenas únicas
En este ejemplo se usan comparaciones que no distinguen mayúsculas de minúsculas para obtener cadenas únicas de una matriz de cadenas.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
Ejemplo 6: Usar comparaciones que no distinguen mayúsculas de minúsculas para obtener cadenas únicas
En este ejemplo se usan comparaciones que no distinguen mayúsculas de minúsculas para obtener cadenas únicas de una matriz de cadenas.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
Parámetros
-AsString
Indica que este cmdlet usa los datos como una cadena. Sin este parámetro, los datos se tratan como un objeto, por lo que cuando se envía una colección de objetos del mismo tipo a Get-Unique, como una colección de archivos, devuelve solo una (la primera). Puede usar este parámetro para buscar los valores únicos de las propiedades del objeto, como los nombres de archivo.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
AsString
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-CaseInsensitive
De forma predeterminada, Get-Unique distingue mayúsculas de minúsculas. Cuando se usa este parámetro, el cmdlet usa comparaciones que no distinguen mayúsculas de minúsculas.
Este parámetro se agregó en PowerShell 7.4.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-InputObject
Especifica la entrada para Get-Unique. Escriba una variable que contenga los objetos o escriba un comando o expresión que obtenga los objetos.
Este cmdlet trata la entrada enviada mediante inputObject como una colección. No enumera elementos individuales de la colección. Dado que la colección es un solo elemento, la entrada enviada mediante inputObject siempre se devuelve sin cambios.
Propiedades del parámetro
| Tipo: | PSObject |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-OnType
Indica que este cmdlet devuelve solo un objeto de cada tipo.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
UniqueByType
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
PSObject
Puede canalizar cualquier tipo de objeto a este cmdlet.
Salidas
PSObject
Este cmdlet devuelve sus objetos de entrada sin duplicados.
Notas
PowerShell incluye los siguientes alias para Get-Unique:
- Todas las plataformas:
gu
Para más información, vea about_Aliases.
Para ordenar una lista, use Sort-Object. También puede usar el parámetro Unique de Sort-Object para buscar los elementos únicos de una lista.