Como Remover Valores Duplicados de um Array do PowerShell

  1. Use Select-Object para Remover Valores Duplicados de um Array do PowerShell
  2. Use Sort-Object para Remover Valores Duplicados de um Array do PowerShell
  3. Use Get-Unique para Remover Duplicatas de um Array do PowerShell
  4. Use Hashtable para Remover Duplicatas de um Array do PowerShell
  5. Conclusão
Como Remover Valores Duplicados de um Array do PowerShell

Arrays são estruturas de dados fundamentais no PowerShell que permitem armazenar coleções de itens, sejam esses itens do mesmo tipo ou de tipos diferentes. Em vários cenários de script, você pode encontrar a necessidade de eliminar itens duplicados de um array.

Este tutorial apresentará diferentes métodos para remover duplicatas de um array do PowerShell.

Use Select-Object para Remover Valores Duplicados de um Array do PowerShell

O cmdlet Select-Object é usado para selecionar propriedades específicas de um objeto ou conjunto de objetos. Você também pode selecionar objetos exclusivos em uma posição especificada em um array.

O parâmetro -Unique especifica que apenas um membro será selecionado se propriedades e valores idênticos estiverem em objetos. Ele é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas valores únicos.

Criamos um array $data com itens duplicados com diferentes casos.

$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")

O seguinte exemplo seleciona valores únicos do array e os salva na variável $data. Como resultado, os elementos duplicados serão removidos de um array.

Comando:

$data = $data | Select-Object -Unique
$data

Saída:

powershell
arrays
Arrays
PowerShell

Ele remove a string duplicada "powershell" mas não remove "PowerShell" porque há uma letra maiúscula na string.

Use Sort-Object para Remover Valores Duplicados de um Array do PowerShell

O cmdlet Sort-Object classifica objetos em ordem crescente ou decrescente com base em seus valores de propriedade. Com o Sort-Object, você também pode usar o parâmetro -Unique para remover as duplicatas dos objetos.

Mas ele não é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas as mesmas. O seguinte exemplo remove os itens duplicados de um array e os salva na variável $a.

Comando:

$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a

Saída:

Arrays
PowerShell

Ele remove "Arrays" e "PowerShell", embora eles diferem apenas pelas caixas de caracteres. Se você quiser tornar o Sort-Object sensível a maiúsculas e minúsculas, pode usar o parâmetro -CaseSensitive.

Comando:

$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b

Saída:

arrays
Arrays
powershell
PowerShell

Agora, a saída remove apenas o "powershell" uma vez que é a única variável que tem uma duplicata (em sensibilidade a maiúsculas e minúsculas).

Use Get-Unique para Remover Duplicatas de um Array do PowerShell

O cmdlet Get-Unique obtém itens exclusivos de uma lista ordenada. Ele compara cada item em uma lista ordenada com o próximo item, remove duplicatas e retorna apenas um membro de cada item.

Este cmdlet só funciona se a lista estiver ordenada. Você pode usar o cmdlet Sort-Object para classificar objetos por valores de propriedade.

O seguinte exemplo usa o cmdlet Get-Unique para remover itens duplicados do array $sort após classificar os elementos do array com Sort-Object.

Comando:

$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c

Saída:

Arrays
arrays
PowerShell
powershell

Nesta saída, o "powershell" é removido.

O Get-Unique é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas valores únicos. Dessa forma, você pode facilmente remover elementos duplicados de um array no PowerShell.

Use Hashtable para Remover Duplicatas de um Array do PowerShell

O PowerShell permite que você utilize uma Hashtable para remover duplicatas de forma eficiente. Uma Hashtable armazena pares de chave-valor onde as chaves são únicas, e ao criar uma Hashtable e usar os itens do array como chaves, você pode remover automaticamente duplicatas.

O seguinte exemplo inicializa uma Hashtable vazia ($uniqueHash) e então itera através do array, configurando cada item como uma chave na Hashtable. Como as chaves devem ser únicas, as duplicatas são automaticamente eliminadas.

O resultado é armazenado na variável $uniqueArray.

$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray

Saída:

powershell
arrays

Nesta saída, as duplicatas são removidas usando uma Hashtable e imprimem os valores restantes. Por favor, note que usar uma Hashtable para remover duplicatas não considera a sensibilidade de caso dos valores.

Conclusão

No PowerShell, gerenciar valores duplicados em arrays é uma tarefa comum, e este artigo apresentou vários métodos para alcançá-la. Usando os cmdlets Select-Object, Sort-Object e Get-Unique, bem como utilizando Hashtables, você pode personalizar sua abordagem para atender a seus requisitos específicos, seja necessário a remoção de duplicatas sensível ou não a maiúsculas e minúsculas.

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