Tôi đang cố gắng trích xuất các nhóm người dùng được chọn bằng Get-ADUser. Người dùng thuộc về các công ty có tên bao gồm các ký tự không phải ASCII, ví dụ: "Gåäördet". Thật không may, chúng tôi phải sử dụng tài sản của công ty cho nhiệm vụ này và chúng tôi cũng cần nó để làm việc từ một kịch bản.
Phần sau hoạt động tuyệt vời trong phiên tương tác nhưng không trả về dữ liệu khi được thực thi trong tập lệnh:
$Company = "Gåäördet"
Get-ADUser -Filter "company -eq '$Company'"
Cách giải quyết tôi đã tìm thấy công việc nhưng không đủ tin cậy (rủi ro khi chọn sai đối tượng):
# Work-around 1:
$Company = "Gaaordet" # Replace åäö with aao in the variable
Get-ADUser -Filter "company -eq '$Company'" # Matches the company "Gåäördet", but why?
...hoặc là...
# Work-around 2:
$Company = "G...rdets" # Use regex for åäö
Get-ADUser -Filter * -Properties Company | ? Company -match "$Company"
Để biết thêm lưu ý: mã hóa ký tự có thể không phải là vấn đề ở đây. Như được đề xuất trong một bình luận, tôi đặt điều này trong một kịch bản. Đọc nhận xét cho mỗi dòng Get-ADUser:
$OutputEncoding = [Console]::OutputEncoding
$Company = "aao"
Get-ADUser -Filter "company -eq '$Company'" # Matches company "åäö"
$Company = "åäö"
Get-ADUser -Filter "company -eq '$Company'" # No matches
Tôi đã hy vọng một số bạn có thể đưa ra một giải pháp tốt hơn cho câu hỏi hóc búa này.