В Windows Server 2012 в консоли Server Manager в разделе управления настройками ролей Remote Desktop Services при выборе определённой Коллекции нам доступно окно управления клиентскими подключениями к серверам нашей фермы RDS, однако по какой-то странной причине разработчики этой самой консоли посчитали что функцию выбора более одного пользователя для отправки сообщения реализовывать не нужно, …наверно чтобы администраторам жизнь мёдом не казалась..
Поэтому в момент возникновения такой необходимости пришлось на скорую руку слепить небольшой PowerShell скрипт (должен выполняться на любом из серверов фермы), который позволит выполнить массовую рассылку сообщения всем подключенным пользователям фермы.
# $ConnectionBroker - Активный сервер RDCB. Если не указан, будет произведена попытка выявить его автоматически (для этого обязательно чтобы скрипт выполнялся на одном из серверов фермы RDS) # $SessionHostCollection – Имя RD-коллекции в которой нужно вывести сообщение. # $ConnectionBroker = "" $SessionHostCollection = "KOM-AD01-RDCOLL" $MessageTitle = "Сообщение от тех.поддержки SAP" $MessageText = "Уважаемые коллеги! В связи с проведением работ по расчету зарплаты - просьба в программе SAP Персонал с 11:00 до конца дня с табельными номерами не работать!" If ($ConnectionBroker -eq "") { $HAFarm = Get-RDConnectionBrokerHighAvailability $ConnectionBroker = $HAFarm.ActiveManagementServer } $Sessions = Get-RDUserSession -ConnectionBroker $ConnectionBroker -CollectionName $SessionHostCollection ForEach ($Session in $Sessions) { Send-RDUserMessage -HostServer $Session.ServerName -UnifiedSessionID $Session.UnifiedSessionID -MessageTitle $MessageTitle -MessageBody $MessageText }
В результате все активные пользователи на всех серверах фермы RDS получат всплывающее сообщение которое трудно не заметить…
Потрясно! Работает даже с RemoteApp на Mac os x...
Доброго дня!
К сожалению, как следует не разбираюсь в этом, поэтому прошу прощения за возможно глупый вопрос.
Вот эти две переменные:
$ConnectionBroker = ""
$SessionHostCollection = ""
Где можно узнать каким значением их можно заполнять?
"KOM-AD01-RDCOLL" - это во всех случаях, для всех серверов?
В начале скрипта же всё написано в комментариях объясняющих эти переменные. Этого недостаточно?
Супер, спасибо.
Спасибо за скрипт. Вопрос - есть возможность сделать так чтобы пользователи которые зайдут в свой сеанс после рассылки сообщения но до наступления события тоже получили подобное сообщение?
Для этого Вам потребуется написать отдельный logon-скрипт, который будет выполняться при входе пользователя в систему и выводить сообщение только для этого пользователя.
Запустить cmd с правами администратора
msg.exe * /server:servername «Текст вашего сообщения»