Estou tentando extrair conjuntos de usuários selecionados com Get-ADUser. Os usuários pertencem a empresas cujos nomes incluem caracteres não ASCII, por exemplo "Gåäördet". Infelizmente, precisamos usar a propriedade da empresa para esta tarefa e também precisamos que ela funcione a partir de um script.
O seguinte funciona muito bem em uma sessão interativa, mas não retorna dados quando executado em um script:
$Company = "Gåäördet"
Get-ADUser -Filter "company -eq '$Company'"
As soluções alternativas que encontrei funcionam, mas não são confiáveis o suficiente (corre o risco de selecionar objetos errados):
# Work-around 1:
$Company = "Gaaordet" # Replace åäö with aao in the variable
Get-ADUser -Filter "company -eq '$Company'" # Matches the company "Gåäördet", but why?
...ou...
# Work-around 2:
$Company = "G...rdets" # Use regex for åäö
Get-ADUser -Filter * -Properties Company | ? Company -match "$Company"
Para observação adicional: a codificação de caracteres pode não ser o problema aqui. Como sugerido em um comentário, coloquei isso em um script. Leia o comentário para cada linha Get-ADUser:
$OutputEncoding = [Console]::OutputEncoding
$Company = "aao"
Get-ADUser -Filter "company -eq '$Company'" # Matches company "åäö"
$Company = "åäö"
Get-ADUser -Filter "company -eq '$Company'" # No matches
Eu esperava que alguns de vocês pudessem oferecer uma solução melhor para esse enigma.