Como Remover Valores Duplicados de um Array do PowerShell
-
Use
Select-Object
para Remover Valores Duplicados de um Array do PowerShell -
Use
Sort-Object
para Remover Valores Duplicados de um Array do PowerShell -
Use
Get-Unique
para Remover Duplicatas de um Array do PowerShell -
Use
Hashtable
para Remover Duplicatas de um Array do PowerShell - Conclusão

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.