Cómo ordenar los valores de un arreglo usando PowerShell
-
Ordenar valores de Arrays en PowerShell utilizando el Cmdlet
Sort-Object
-
Ordenar valores de Arrays en PowerShell utilizando el método
[Array]::Sort()
- Conclusión

Ordenar arrays es una tarea común y esencial en la escritura de scripts de PowerShell, lo que permite una organización y manipulación de datos eficiente. Ya sea que se trate de arrays numéricos, de cadenas o de objetos personalizados, PowerShell proporciona herramientas versátiles para ordenar.
En este artículo completo, exploraremos diferentes métodos y técnicas para ordenar valores de arrays, adaptándonos a varios escenarios y preferencias.
Ordenar valores de Arrays en PowerShell utilizando el Cmdlet Sort-Object
El cmdlet Sort-Object
proporciona una forma conveniente y versátil de organizar los valores de un array en orden ascendente o descendente basado en varios criterios. No se limita a arrays y se puede usar con cualquier colección de objetos.
Cuando se trata de ordenar arrays, cada elemento en el array se considera un objeto, y el cmdlet Sort-Object
se aplica en consecuencia.
La sintaxis básica del cmdlet Sort-Object
es la siguiente:
<array> | Sort-Object [-Property <property>] [-Descending] [-Culture <culture>] [-Unique]
Donde:
<array>
: Representa el array que deseas ordenar.-Property
: Especifica la propiedad según la cual se debe realizar la ordenación. Si no se proporciona, PowerShell usa las propiedades de ordenación predeterminadas del primer objeto de entrada.-Descending
: Ordena los objetos en orden descendente. Si este parámetro no se usa, la ordenación se realiza en orden ascendente.-Culture
: Especifica la cultura que se debe usar para la ordenación. Esto es opcional y por defecto es la cultura actual.-Unique
: Asegura que la lista ordenada contenga elementos únicos.
Vamos a sumergirnos en ejemplos prácticos para entender cómo usar el cmdlet Sort-Object
para ordenar los valores de un array.
Ejemplo 1: Ordenar en Orden Ascendente
$numbers = 4, 2, 7, 1, 5
$sortedNumbers = $numbers | Sort-Object
$sortedNumbers
Aquí, tenemos un array de números almacenado en la variable $numbers
. Al enviar este array a Sort-Object
, ordenamos los números en orden ascendente.
El array ordenado se almacena en $sortedNumbers
.
Salida:
1
2
4
5
7
Ejemplo 2: Ordenar en Orden Descendente
$cities = "New York", "London", "Paris", "Tokyo", "Sydney"
$sortedCitiesDescending = $cities | Sort-Object -Descending
$sortedCitiesDescending
En este ejemplo, el array $cities
contiene nombres de ciudades. Usamos el parámetro -Descending
para ordenarlos en orden descendente, y el resultado se almacena en $sortedCitiesDescending
.
Salida:
Tokyo
Sydney
Paris
New York
London
Ejemplo 3: Ordenar Objetos Basados en la Propiedad
$people = @( [PSCustomObject]@{ Name = "Alice"; Age = 25 },
[PSCustomObject]@{ Name = "Bob"; Age = 30 },
[PSCustomObject]@{ Name = "Charlie"; Age = 22 } )
$sortedPeople = $people | Sort-Object Age
$sortedPeople
En este ejemplo, tenemos un array de objetos personalizados que representan personas con propiedades Name
y Age
. Usamos Sort-Object
con el parámetro -Property
para ordenar el array según la propiedad Age
.
Salida:
Name Age
---- ---
Charlie 22
Alice 25
Bob 30
Estos ejemplos muestran la flexibilidad y el poder del cmdlet Sort-Object
en la ordenación de valores de arrays en PowerShell. Ya sea que estés trabajando con arrays simples o arrays de objetos complejos, Sort-Object
proporciona una solución directa y efectiva.
Ordenar valores de Arrays en PowerShell utilizando el método [Array]::Sort()
Mientras que el cmdlet Sort-Object
es una herramienta poderosa para ordenar arrays, PowerShell también ofrece el método [Array]::Sort()
, un miembro de la clase [Array]
en .NET
. Este método está diseñado específicamente para ordenar arrays. Modifica directamente el orden de los elementos en el array original, convirtiéndolo en un algoritmo de ordenación en el lugar.
La sintaxis para usar el método [Array]::Sort()
es la siguiente:
[Array]::Sort(<array>)
<array>
: Representa el array que deseas ordenar.
Veamos algunos ejemplos para entender cómo utilizar el método [Array]::Sort()
para ordenar valores de arrays.
Ejemplo 1: Ordenar en Orden Ascendente
Para ordenar un array en orden ascendente utilizando el método [Array]::Sort()
, podemos invocar el método y pasar el array como argumento:
$numbers = 4, 2, 7, 1, 5
[Array]::Sort($numbers)
$numbers
En este ejemplo, el array $numbers
contiene valores numéricos. Usamos el método [Array]::Sort()
para ordenar el array en orden ascendente directamente. La ordenación se realiza en el lugar, lo que significa que el array original se modifica.
Salida:
1
2
4
5
7
Ejemplo 2: Ordenar Cadenas en Orden Ascendente
$fruits = "Apple", "Orange", "Banana", "Grapes"
[Array]::Sort($fruits)
$fruits
Aquí, el array $fruits
contiene valores de cadena que representan frutas. Se aplica el método [Array]::Sort()
para ordenar el array alfabéticamente en orden ascendente. El array original se modifica en el lugar.
Salida:
Apple
Banana
Grapes
Orange
Ejemplo 3: Ordenar en Orden Descendente
$ages = 35, 22, 28, 40, 30
[Array]::Sort($ages)
$ages = $ages -join ", "
$ages
En este ejemplo, el array $ages
consiste en valores numéricos. Aplicamos [Array]::Sort()
para ordenar el array en orden ascendente y luego usamos -join
para concatenar los valores ordenados en una cadena para mejor legibilidad.
Salida:
22, 28, 30, 35, 40
El método [Array]::Sort()
es una forma conveniente de ordenar arrays en el lugar. Es particularmente útil cuando deseas modificar el array original directamente.
Sin embargo, es esencial tener en cuenta que este método no es adecuado para ordenar arrays de objetos complejos o tipos personalizados, donde Sort-Object
sería una elección más apropiada.
Conclusión
En este artículo, hemos descubierto dos métodos fundamentales: el versátil cmdlet Sort-Object
y el sencillo método [Array]::Sort()
. Cada método ofrece sus únicas ventajas, adaptándose a diferentes escenarios y preferencias en la escritura de scripts de PowerShell.
El cmdlet Sort-Object
se destaca cuando se trata de manejar arrays de objetos personalizados o tipos de datos diversos con su sintaxis flexible y capacidad para ordenar objetos basados en propiedades. Su integración sin problemas en las canalizaciones lo convierte en una herramienta poderosa para la manipulación de arrays, proporcionando capacidades de ordenación tanto ascendentes como descendentes.
Por otro lado, el método [Array]::Sort()
brilla en simplicidad y eficiencia, modificando directamente el array original en el lugar. Es ideal para escenarios donde priorizas modificar el array existente sin crear variables adicionales.
Sin embargo, es crucial reconocer su idoneidad principalmente para ordenar arrays simples de tipos de datos primitivos.
En última instancia, ya sea que optes por el cmdlet Sort-Object
o el método [Array]::Sort()
, depende de los requisitos específicos de tu script de PowerShell.