@dshumov
Олдскул - Фигурнов форева

Powershell кодировка сообщений пользователю. Как?

Товарищи, есть кусок скрипта, который должен выводить сообщение всем пользователям RDS:
$ConnectionBroker = "MOS-RDS-BROKER.nasta.local"
$SessionHostCollection = "MS products delivery"

$MessageTitle = "Сообщение от тех.поддержки"
$MessageText = "Уважаемые коллеги!В связи с проведением технических работпросьба корректно завершить работу на RDS - в течении 10 минут сервер будет перезагружен!"

If ($ConnectionBroker -eq "") {
 $HAFarm = Get-RDConnectionBrokerHighAvailability
 $ConnectionBroker = $HAFarm.ActiveManagementServer
}

$Sessions = Get-RDUserSession -ConnectionBroker $ConnectionBroker -CollectionName $SessionHostCollection
$encoding = [System.Text.Encoding]::UTF8
ForEach ($Session in $Sessions) {
Send-RDUserMessage -HostServer $Session.ServerName -UnifiedSessionID $Session.UnifiedSessionID -MessageTitle $MessageTitle -MessageBody $MessageText -Encoding $encoding
}

Скрипт то работает, но проблема в кодировке приходящих пользователям сообщений.
Пробовал делать так:
$encoding = [System.Text.Encoding]::UTF8
Send-RDUserMessage -HostServer $Session.ServerName -UnifiedSessionID $Session.UnifiedSessionID -MessageTitle $MessageTitle -MessageBody $MessageText -Encoding $encoding

Но не прокатывает. Пишет, что: Send-RDUserMessage : A parameter cannot be found that matches parameter name 'Encoding'.
Пробовал в блокноте с разными кодировками пересохранять - тот же болт.
Как решить проблему?
  • Вопрос задан
  • 464 просмотра
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
а если заменить:
$MessageText = "Уважаемые коллеги!В связи с проведением технических работ просьба корректно завершить работу на RDS - в течении 10 минут сервер будет перезагружен!"

на:
$MessageText =[System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::UTF8.GetBytes("Уважаемые коллеги!В связи с проведением технических работ просьба корректно завершить работу на RDS - в течении 10 минут сервер будет перезагружен!"))


я так понимаю, таким образом мы явно укажем, что хотим эту строку хранить в УТФ8.
если опять будут вопросительные знаки вместо русского текста, замените утф8 на утф16.

еще можно попробовать на принимающей стороне настроить региональные сетинги для нон-юникод программ и выставить там россию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы