Cómo eliminar valores duplicados de un array de PowerShell
-
Usa
Select-Object
para Eliminar Valores Duplicados de un Arreglo de PowerShell -
Usa
Sort-Object
para Eliminar Valores Duplicados de un Arreglo de PowerShell -
Usa
Get-Unique
para Eliminar Duplicados de un Arreglo de PowerShell -
Usa
Hashtable
para Eliminar Duplicados de un Arreglo de PowerShell - Conclusión

Los arreglos son estructuras de datos fundamentales en PowerShell que te permiten almacenar colecciones de elementos, ya sean de mismo tipo o de diferentes tipos. En varios escenarios de scripting, es posible que te encuentres con la necesidad de eliminar elementos duplicados de un arreglo.
Este tutorial presentará diferentes métodos para eliminar duplicados de un arreglo de PowerShell.
Usa Select-Object
para Eliminar Valores Duplicados de un Arreglo de PowerShell
El cmdlet Select-Object
se utiliza para seleccionar propiedades específicas de un objeto o conjunto de objetos. También puedes seleccionar objetos únicos en una posición específica de un arreglo.
El parámetro -Unique
especifica que solo se seleccionará un solo miembro si existen propiedades y valores idénticos en los objetos. Es sensible a mayúsculas y minúsculas, por lo que las cadenas que solo difieren en el uso de letras mayúsculas también se consideran valores únicos.
Hemos creado un arreglo $data
con elementos duplicados de diferentes casos.
$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
El siguiente ejemplo selecciona valores únicos del arreglo y los guarda en la variable $data
. Como resultado, los elementos duplicados serán eliminados de un arreglo.
Comando:
$data = $data | Select-Object -Unique
$data
Salida:
powershell
arrays
Arrays
PowerShell
Elimina la cadena duplicada "powershell"
pero no elimina "PowerShell"
porque hay una letra en mayúscula en la cadena.
Usa Sort-Object
para Eliminar Valores Duplicados de un Arreglo de PowerShell
El cmdlet Sort-Object
ordena objetos en orden ascendente o descendente según los valores de sus propiedades. Con Sort-Object
también puedes usar el parámetro -Unique
para eliminar los duplicados de los objetos.
Pero es insensible a mayúsculas y minúsculas, por lo que las cadenas que solo difieren en el uso de letras mayúsculas también se consideran las mismas. El siguiente ejemplo elimina los elementos duplicados de un arreglo y los guarda en la variable $a
.
Comando:
$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a
Salida:
Arrays
PowerShell
Elimina "Arrays"
y "PowerShell"
, aunque solo difieren por la capitalización de los caracteres. Si deseas que Sort-Object
sea sensible a mayúsculas y minúsculas, puedes usar el parámetro -CaseSensitive
.
Comando:
$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b
Salida:
arrays
Arrays
powershell
PowerShell
Ahora, la salida solo elimina el "powershell"
ya que es la única variable que tiene un duplicado (en modo sensible a mayúsculas).
Usa Get-Unique
para Eliminar Duplicados de un Arreglo de PowerShell
El cmdlet Get-Unique
obtiene elementos únicos de una lista ordenada. Compara cada elemento en una lista ordenada con el siguiente elemento, elimina duplicados y devuelve solo un miembro de cada elemento.
Este cmdlet solo funciona si la lista está ordenada. Puedes usar el cmdlet Sort-Object
para ordenar objetos por valores de propiedades.
El siguiente ejemplo utiliza el cmdlet Get-Unique
para eliminar elementos duplicados del arreglo $sort
después de ordenar los elementos del arreglo con Sort-Object
.
Comando:
$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c
Salida:
Arrays
arrays
PowerShell
powershell
En esta salida, se elimina el "powershell"
.
El Get-Unique
es sensible a mayúsculas y minúsculas, por lo que las cadenas que solo difieren en el uso de letras mayúsculas también se consideran valores únicos. De esta manera, puedes eliminar fácilmente elementos duplicados de un arreglo en PowerShell.
Usa Hashtable
para Eliminar Duplicados de un Arreglo de PowerShell
PowerShell te permite utilizar un Hashtable
para eliminar duplicados de manera eficiente. Un Hashtable
almacena pares clave-valor donde las claves son únicas y, al crear un Hashtable
y usar los elementos del arreglo como claves, puedes eliminar automáticamente duplicados.
El siguiente ejemplo inicializa un Hashtable
vacío ($uniqueHash
) y luego itera a través del arreglo, estableciendo cada elemento como una clave en el Hashtable
. Dado que las claves deben ser únicas, los duplicados se eliminan automáticamente.
El resultado se almacena en la variable $uniqueArray
.
$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray
Salida:
powershell
arrays
En esta salida, los duplicados son eliminados usando un Hashtable
y se imprimen los valores restantes. Ten en cuenta que usar un Hashtable
para eliminar duplicados no considera la sensibilidad de las mayúsculas y minúsculas de los valores.
Conclusión
En PowerShell, gestionar valores duplicados en arreglos es una tarea común, y este artículo ha presentado varios métodos para lograrlo. Al utilizar los cmdlets Select-Object
, Sort-Object
, y Get-Unique
, así como aprovechar los Hashtables
, puedes adaptar tu enfoque para satisfacer tus requerimientos específicos, ya sea que necesites una eliminación de duplicados sensible o insensible a mayúsculas y minúsculas.