PowerShell: ¿Cómo eliminar duplicados de la matriz?
PowerShell es un potente lenguaje de secuencias de comandos que se utiliza ampliamente en la industria de TI para automatizar tareas. Es un shell de línea de comandos y un lenguaje de secuencias de comandos construido sobre el marco .NET. Una de las tareas más comunes que realizan los profesionales en PowerShell es trabajar con matrices. Las matrices son una colección de datos que se pueden almacenar en una sola variable y a la que se puede acceder mediante un índice. Clasificar duplicados de matrices puede resultar tedioso y llevar mucho tiempo para los codificadores. Afortunadamente, PowerShell ofrece una solución fácil de usar para eliminar duplicados de matrices. En esta publicación de blog, exploraremos cómo eliminar duplicados de una matriz en PowerShell y mejorar su eficiencia de codificación.
Comprender los duplicados en matrices
En pocas palabras, las matrices se utilizan para almacenar una lista de datos de forma organizada en una variable. Un duplicado de matriz ocurre cuando hay más de un elemento con el mismo valor. Esto puede causar problemas al trabajar con la matriz porque puede generar resultados incorrectos o errores. Por lo tanto, eliminar duplicados de una matriz es importante para garantizar que los datos sean precisos. ¡Ahí es donde PowerShell resulta útil!
Métodos para eliminar duplicados de una matriz en PowerShell
Existen varios métodos para eliminar duplicados de una matriz en PowerShell. Los siguientes son algunos de los métodos más comunes:
Método 1: uso del cmdlet Seleccionar objeto para obtener valores únicos
El cmdlet Select-Object se utiliza para seleccionar propiedades específicas de un objeto. También se puede utilizar para obtener valores únicos de una matriz. Para usar el cmdlet Select-Object para obtener valores únicos de una matriz, puede usar el siguiente comando:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Select-Object -Unique
Este comando eliminará todos los duplicados de la matriz y solo dejará los elementos únicos de la matriz.
Producción :
1
2
3
4
5
6
7
Aquí hay otro ejemplo de cómo obtener valores únicos de una matriz de cadenas:
# Sample string array with duplicates
$StringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "PowerShell"
# Create a new array to store unique strings
$UniqueArray = $StringArray | Select-Object -Unique
# Output the unique array
$UniqueArray
Producción :
SharePoint
Microsoft 365
PowerShell
Método 2: uso del cmdlet Sort-Object para eliminar duplicados
El cmdlet Sort-Object se utiliza para ordenar objetos por una o más propiedades. También se puede utilizar para eliminar duplicados de una matriz. Para usar el cmdlet Sort-Object para eliminar duplicados de una matriz, puede usar el siguiente comando:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Sort-Object -Unique
Si desea realizar una eliminación de duplicados que distinga entre mayúsculas y minúsculas, aquí tiene un ejemplo:
# Sample string array with duplicates
$stringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "powershell"
# Create a new array to store unique strings
$uniqueArray = $stringArray | sort-Object -CaseSensitive -Unique
# Output the unique array
$uniqueArray
Producción :
Microsoft 365
powershell
PowerShell
SharePoint
Método 3: uso del cmdlet Get-Unique para eliminar duplicados
PowerShell proporciona una forma sencilla y eficaz de eliminar entradas duplicadas de una matriz mediante el cmdlet Get-Unique. Sin embargo, tenga en cuenta que Get-Unique solo funciona en listas ordenadas. Si no está seguro de si su lista está ordenada, puede usar Sort-Object antes de Get-Unique. Para usar el cmdlet Get-Unique para eliminar duplicados de una matriz, puede usar el siguiente comando:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$UniqueArray = $array | Sort-Object | Get-Unique
$UniqueArray # Outputs: 1 2 3 4 5 6 7
Aquí está el resultado de los scripts anteriores:
¿Cómo encontrar duplicados utilizando el cmdlet de objeto de grupo?
El cmdlet Group-Object se utiliza para agrupar objetos por una o más propiedades. También se puede utilizar para buscar duplicados en una matriz. Para usar el cmdlet Group-Object para buscar duplicados en una matriz, puede usar el siguiente comando:
$Array | Group-Object | Where-Object Count -gt 1 | Select-Object Name
Este comando agrupará los elementos de la matriz por su valor y contará el número de veces que aparece cada valor. Luego seleccionará los valores que aparecen más de una vez.
Combinación de métodos para matrices más complejas
Para matrices más complejas, puede que sea necesario combinar métodos para eliminar duplicados. Por ejemplo, si tiene una matriz de objetos y desea eliminar duplicados según una propiedad específica, puede usar el siguiente comando:
$Array | Sort-Object -Property PropertyName -Unique | Select-Object PropertyName, Property1, Property2
Aquí hay un ejemplo:
# Array with duplicate objects
$ObjectArray = @(
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Jane"
Age = 30
Desgination = "Analyst"
},
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Alex"
Age = 35
Desgination = "Engineer"
}
)
#Select unique objects from the array based on Name property
$objectArray | Sort-Object -Property Name -Unique | Select-Object Name, Age
Salidas:
Name Age
---- ---
Alex 35
Jane 30
John 25
Este comando ordenará los objetos en la matriz por la propiedad Nombre de propiedad, mantendrá solo la primera aparición del elemento y eliminará los duplicados según esa propiedad. Luego seleccionará las propiedades Nombre de propiedad, Propiedad1 y Propiedad2 de cada objeto.
Conclusión
Eliminar duplicados de una matriz en PowerShell es una tarea frecuente que quizás deba realizar de forma regular. Existen varios métodos para eliminar duplicados de una matriz, incluido el uso del cmdlet Select-Object, el cmdlet Sort-Object, el cmdlet Get-Unique y el cmdlet Group-Object. Comprender estas técnicas le permitirá manejar cualquier desafío futuro que pueda surgir con duplicados en sus matrices y le ayudará a mejorar la eficiencia de su codificación y ahorrar tiempo.

