Como ordenar valores de array usando PowerShell

  1. Classificar Valores de Array no PowerShell Usando o Cmdlet Sort-Object
  2. Classificar Valores de Array no PowerShell Usando o Método [Array]::Sort()
  3. Conclusão
Como ordenar valores de array usando PowerShell

Classificar arrays é uma tarefa comum e essencial na scriptagem PowerShell, permitindo uma organização e manipulação eficientes de dados. Seja lidando com arrays numéricos, de string ou de objetos personalizados, PowerShell fornece ferramentas versáteis para classificação.

Neste artigo abrangente, exploraremos diferentes métodos e técnicas para classificar valores de arrays, atendendo a vários cenários e preferências.

Classificar Valores de Array no PowerShell Usando o Cmdlet Sort-Object

O cmdlet Sort-Object fornece uma maneira conveniente e versátil de organizar valores de arrays em ordem crescente ou decrescente com base em vários critérios. Não é limitado a arrays e pode ser usado com qualquer coleção de objetos.

Quando se trata de classificar arrays, cada elemento no array é considerado um objeto, e o cmdlet Sort-Object é aplicado de acordo.

A sintaxe básica do cmdlet Sort-Object é a seguinte:

<array> | Sort-Object [-Property <property>] [-Descending] [-Culture <culture>] [-Unique]

Onde:

  • <array>: Representa o array que você deseja classificar.
  • -Property: Especifica a propriedade com base na qual a classificação deve ser realizada. Se não fornecido, o PowerShell usa as propriedades de classificação padrão do primeiro objeto de entrada.
  • -Descending: Classifica os objetos em ordem decrescente. Se esse parâmetro não for usado, a classificação é feita em ordem crescente.
  • -Culture: Especifica a cultura a ser usada para a classificação. Isso é opcional e padrão para a cultura atual.
  • -Unique: Garante que a lista classificada contenha itens únicos.

Vamos mergulhar em exemplos práticos para entender como usar o cmdlet Sort-Object para classificar valores de arrays.

Exemplo 1: Classificação em Ordem Crescente

$numbers = 4, 2, 7, 1, 5
$sortedNumbers = $numbers | Sort-Object
$sortedNumbers

Aqui, temos um array de números armazenados na variável $numbers. Ao canalizar esse array para Sort-Object, classificamos os números em ordem crescente.

O array classificado é armazenado em $sortedNumbers.

Saída:

1
2
4
5
7

Exemplo 2: Classificação em Ordem Decrescente

$cities = "New York", "London", "Paris", "Tokyo", "Sydney"
$sortedCitiesDescending = $cities | Sort-Object -Descending
$sortedCitiesDescending

Neste exemplo, o array $cities contém nomes de cidades. Usamos o parâmetro -Descending para classificá-los em ordem decrescente, e o resultado é armazenado em $sortedCitiesDescending.

Saída:

Tokyo
Sydney
Paris
New York
London

Exemplo 3: Classificação de Objetos com Base em Propriedade

$people = @( [PSCustomObject]@{ Name = "Alice"; Age = 25 },
    [PSCustomObject]@{ Name = "Bob"; Age = 30 },
    [PSCustomObject]@{ Name = "Charlie"; Age = 22 } )
$sortedPeople = $people | Sort-Object Age
$sortedPeople

Neste exemplo, temos um array de objetos personalizados representando pessoas com propriedades Name e Age. Usamos Sort-Object com o parâmetro -Property para classificar o array com base na propriedade Age.

Saída:

Name    Age
----    ---
Charlie  22
Alice    25
Bob      30

Estes exemplos mostram a flexibilidade e o poder do cmdlet Sort-Object na classificação de valores de arrays no PowerShell. Seja trabalhando com arrays simples ou arrays de objetos complexos, Sort-Object fornece uma solução direta e eficaz.

Classificar Valores de Array no PowerShell Usando o Método [Array]::Sort()

Enquanto o cmdlet Sort-Object é uma ferramenta poderosa para classificar arrays, o PowerShell também oferece o método [Array]::Sort(), um membro da classe [Array] no .NET. Este método é projetado especificamente para classificar arrays. Ele modifica diretamente a ordem dos elementos no array original, tornando-se um algoritmo de classificação em lugar.

A sintaxe para usar o método [Array]::Sort() é a seguinte:

[Array]::Sort(<array>)
  • <array>: Representa o array que você deseja classificar.

Vamos ver alguns exemplos para entender como utilizar o método [Array]::Sort() para classificar valores de arrays.

Exemplo 1: Classificação em Ordem Crescente

Para classificar um array em ordem crescente usando o método [Array]::Sort(), podemos invocar o método e passar o array como argumento:

$numbers = 4, 2, 7, 1, 5
[Array]::Sort($numbers)
$numbers

Neste exemplo, o array $numbers contém valores numéricos. Usamos o método [Array]::Sort() para classificar o array em ordem crescente diretamente. A classificação é realizada in loco, significando que o array original é modificado.

Saída:

1
2
4
5
7

Exemplo 2: Classificação de Strings em Ordem Crescente

$fruits = "Apple", "Orange", "Banana", "Grapes"
[Array]::Sort($fruits)
$fruits

Aqui, o array $fruits contém valores de string representando frutas. O método [Array]::Sort() é aplicado para classificar o array alfabeticamente em ordem crescente. O array original é modificado em lugar.

Saída:

Apple
Banana
Grapes
Orange

Exemplo 3: Classificação em Ordem Decrescente

$ages = 35, 22, 28, 40, 30
[Array]::Sort($ages)
$ages = $ages -join ", "
$ages

Neste exemplo, o array $ages consiste em valores numéricos. Aplicamos [Array]::Sort() para classificar o array em ordem crescente e, em seguida, usamos -join para concatenar os valores classificados em uma string para melhor legibilidade.

Saída:

22, 28, 30, 35, 40

O método [Array]::Sort() é uma maneira conveniente de classificar arrays em lugar. É particularmente útil quando você deseja modificar o array original diretamente.

No entanto, é essencial notar que este método não é adequado para classificar arrays de objetos complexos ou tipos personalizados, onde Sort-Object seria uma escolha mais apropriada.

Conclusão

Neste artigo, descobrimos dois métodos fundamentais: o versátil cmdlet Sort-Object e o simples método [Array]::Sort(). Cada método oferece suas vantagens únicas, atendendo a diferentes cenários e preferências na scriptagem PowerShell.

O cmdlet Sort-Object se destaca ao lidar com arrays de objetos personalizados ou tipos de dados diversos, com sua sintaxe flexível e capacidade de classificar objetos com base em propriedades. Sua integração perfeita em pipelines o torna uma ferramenta poderosa para manipulação de arrays, fornecendo tanto capacidades de classificação em ordem crescente quanto decrescente.

Por outro lado, o método [Array]::Sort() brilha em simplicidade e eficiência, modificando diretamente o array original em lugar. É ideal para cenários onde você prioriza modificar o array existente sem criar variáveis adicionais.

No entanto, é crucial reconhecer sua adequação principalmente para classificar arrays simples de tipos de dados primitivos.

Em última análise, se você optar pelo cmdlet Sort-Object ou pelo método [Array]::Sort() dependerá dos requisitos específicos do seu script PowerShell.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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

Artigo relacionado - PowerShell Array