Remote Desktop Services - Отправка сообщения всем пользователям фермы RDS

imageВ Windows Server 2012 в консоли Server Manager в разделе управления настройками ролей Remote Desktop Services при выборе определённой Коллекции нам доступно окно управления клиентскими подключениями к серверам нашей фермы RDS, однако по какой-то странной причине разработчики этой самой консоли посчитали что функцию выбора более одного пользователя для отправки сообщения реализовывать не нужно, …наверно чтобы администраторам жизнь мёдом не казалась..

image

Поэтому в момент возникновения такой необходимости пришлось на скорую руку слепить небольшой 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 получат всплывающее сообщение которое трудно не заметить… image

Всего комментариев: 7 Комментировать

  1. naezd /

    Потрясно! Работает даже с RemoteApp на Mac os x...

  2. Ruslan /

    Доброго дня!

    К сожалению, как следует не разбираюсь в этом, поэтому прошу прощения за возможно глупый вопрос.
    Вот эти две переменные:
    $ConnectionBroker = ""
    $SessionHostCollection = ""
    Где можно узнать каким значением их можно заполнять?
    "KOM-AD01-RDCOLL" - это во всех случаях, для всех серверов?

    1. Алексей Максимов / Автор записи

      В начале скрипта же всё написано в комментариях объясняющих эти переменные. Этого недостаточно?

  3. Artyom Gradinar /

    Супер, спасибо.

  4. Oleksandr /

    Спасибо за скрипт. Вопрос - есть возможность сделать так чтобы пользователи которые зайдут в свой сеанс после рассылки сообщения но до наступления события тоже получили подобное сообщение?

    1. Алексей Максимов / Автор записи

      Для этого Вам потребуется написать отдельный logon-скрипт, который будет выполняться при входе пользователя в систему и выводить сообщение только для этого пользователя.

  5. MD /

    Запустить cmd с правами администратора
    msg.exe * /server:servername «Текст вашего сообщения»

Добавить комментарий