Я пытаюсь извлечь отдельные наборы пользователей с Get-ADUser. Пользователи принадлежат компаниям, имена которых включают символы не ASCII, например, "Gåäördet". К сожалению, нам нужно использовать свойство компании для этой задачи, а также нам нужно, чтобы оно работало из сценария.
Следующее прекрасно работает в интерактивном сеансе, но не возвращает данных при выполнении в скрипте:
$Company = "Gåäördet"
Get-ADUser -Filter "company -eq '$Company'"
Обходные пути, которые я нашел работу, но недостаточно надежны (рискует выбрать неправильные объекты):
# Work-around 1:
$Company = "Gaaordet" # Replace åäö with aao in the variable
Get-ADUser -Filter "company -eq '$Company'" # Matches the company "Gåäördet", but why?
...или...
# Work-around 2:
$Company = "G...rdets" # Use regex for åäö
Get-ADUser -Filter * -Properties Company | ? Company -match "$Company"
Для дополнительного примечания: кодировка символов не может быть проблемой здесь. Как предложено в комментарии, я поместил это в сценарий. Прочитайте комментарий для каждой строки Get-ADUser:
$OutputEncoding = [Console]::OutputEncoding
$Company = "aao"
Get-ADUser -Filter "company -eq '$Company'" # Matches company "åäö"
$Company = "åäö"
Get-ADUser -Filter "company -eq '$Company'" # No matches
Я надеялся, что некоторые из вас могли бы предложить лучшее решение этой головоломки.