Cómo eliminar valores duplicados de un array de PowerShell

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

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.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - PowerShell Array