Cómo ordenar los valores de un arreglo usando PowerShell

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

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.

¿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