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

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.