[Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений 5
1 Тема от z668 2014-01-15 13:53:37 (2014-12-19 18:05:38 отредактировано z668)
Тема: [Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
Многим известно что в Windows Vista, 7, 8, Windows Server 2008/2012 отключили утилиту командной строки net send. Путём быстрых поисков был найден аналог прошлой утилиты, называется MSG. Работать с ней просто, но вот сообщения на машины под управлением Windows XP отсылаться ни в какую не хотели. Но и это также просто лечится. Для этого надо произвести довольно простые манипуляции с реестром.
Открываем реестр машины в домене и добавляем туда параметр с ключём по указанному пути:
Либо через «Групповые политики».
2 Ответ от Кахович Андрей 2014-01-15 17:32:46
- Кахович Андрей
- Administrator
- Неактивен
- Откуда: Украина
- Зарегистрирован: 2013-01-18
- Сообщений: 3,281
Re: [Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
Зачет! Обязательно воспользуюсь советом, когда понадобится. Про net send даже не в курсе был что убрали, зачем? Так было прикольно пользователей пугать
3 Ответ от z668 2014-02-10 01:28:47 (2014-12-19 18:05:48 отредактировано z668)
Re: [Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
Запилил простейший GUI, отправка сообщения по списку компьютеров.
p.s. если есть предложения какие функции добавить — пишите в теме или в ЛС.
4 Ответ от Кахович Андрей 2014-02-10 15:51:55
- Кахович Андрей
- Administrator
- Неактивен
- Откуда: Украина
- Зарегистрирован: 2013-01-18
- Сообщений: 3,281
Re: [Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
Спасибо! Насколько я помню, в самом net send никаких дополнительных опций и не было, так что даже не знаю, что придумать?
5 Ответ от z668 2014-02-10 17:54:15 (2014-12-19 18:05:58 отредактировано z668)
Re: [Инструкция] Отправка сообщений MSG из Windows Server 2008/2012
На другом форуме человек попросил выгрузку компьютеров из домена в текстовое поле, попробую реализовать. Там используется LDAP, так что незнаю когда выложу.
Сообщений 5
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум работает на PunBB , при поддержке Informer Technologies, Inc
Сгенерировано за 0.041 секунды (50% PHP — 50% БД) 9 запросов к базе данных
Отправка сообщения всем пользователям RDS фермы, за минуту
Отправка сообщения всем пользователям RDS фермы, за минуту
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами научились устанавливать библиотеку VCRUNTIME140.dll в операционных системах Windows. Сегодня я переключу наше внимание с клиентских ОС на серверные. Наверняка многие из обычных людей , а тем более системные администраторы знают, что такое терминальные службы, RDS ферма или удаленный стол (Удаленка). Это уже неотъемлемая часть бизнес процессов, для многих организаций. Бывают ситуации, что вам необходимо оповестить всех пользователей терминального сервера, о необходимости в его обслуживании. По мимо корпоративной почты вы можете, это делать и средствами Windows и сегодня я покажу, как отправить сообщение всем пользователям RDS фермы.
Постановка задачи
Необходимо научиться отправлять сообщение на терминальный стол всем пользователям, кто на нем работает, иметь возможность вводить текст сообщения. Данный функционал, очень полезен, когда у вас зависают пользовательские сессии и вам необходимо перезагрузить сервер, для его восстановления, но так как на нем есть активные сессии, то желательно бы предупредить сотрудников, чтобы они сохранили все свои данные.
Методы отправки сообщения на RDS ферме
- Отправка сообщение, через диспетчер задач
- Отправка сообщения через утилиту командной строки msg
- Отправка сообщения через командлеты PowerShell
Как отправить предупреждение пользователям RDS через диспетчер задач
Во времена терминальных служб на Windows Server 2008 R2, была замечательная возможность массовой отправки сообщений для всех пользователей фермы и делалось, это штатно из диспетчера задач. В 2008R2, когда вы запустите диспетчер задач и перейдете на вкладку «Пользователи», то у вас была возможность выделить их всех, щелкнуть правой кнопкой мыши и из контекстного меню выбрать пункт «Отправить сообщение».
У вас откроется окно «Отправка сообщений», где вы можете задать заголовок сообщения и его текст. После чего нажмите кнопку «Ок».
В результате все пользователи данного удаленного стола, получат вот такое сообщение в виде всплывающего окна.
Точно так же в Windows Server 2008 R2 вы могли произвести отправку оповещений, через оснастку «Диспетчер служб удаленных рабочих столов»
К сожалению начиная с Windows Server 2012 R2, данную возможность для массовой рассылки из диспетчера задач убрали, вы теперь не можете выделить всех пользователей.
Использование утилиты MSG
Есть такая замечательная утилита командной строки msg. Что хорошо, вы ей можете пользоваться на любом компьютере, хоть на Windows 8.1. Откройте cmd, желательно от имени администратора и просто введите:
У вас появится справка по утилите. Конструкция команды будет такой MSG < | | | @ | *>[/SERVER: ] [/TIME: ] [/V] [/W] [ ]
- Имя пользователя.
- Имя сеанса. Удобно если нужно отправить конкретному сеансу.
- Идентификатор сеанса.
- @ Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение.
- * Отправить сообщение всем сеансам на указанном сервере.
- /SERVER: Сервер (по умолчанию — текущий).
- /TIME: Интервал ожидания подтверждения от получателя.
- /V Отображение информации о выполненных действиях.
- /W Ожидание ответа от пользователя, полезно вместе с /V.
- Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN.
Если нужно отправить сообщение всем людям локально с того же сервера, где они работают, то просто введите:
Вот так, например в Windows Server 2019 выглядит подобное оповещение на RDS ферме.
Для отправки оповещения на удаленный сервер вы должны использовать вот такую конструкцию:
Для отправки на несколько серверов, можно использовать вот такое построение команды:
Использование связки PowerShell и msg
Если у вас выскакивает ошибка «Ошибка 1726 при получении имен сеанса» и сообщение не отправляется, то тут вся загвоздка в том, что у той учетной записи от имени которой открыта командная строка, просто не хватает прав. Вам нужно открыть cmd от имени пользователя у кого есть права на тот сервер.
Третий метод отправки сообщения пользователям RDS через Send-RDUser Message
Безусловно самым популярным и универсальным методом отправки оповещений пользователям удаленного рабочего стола, являются командлеты PowerShell. Одним из таких командлетов выступает Send-RDUser Message.
- HostServer — Имя RDS сервера
- -UnifiedSessionID — идентификатор сеанса, к сожалению сразу нельзя выбрать всех, обязательно указывать число (Как определить номер сеанса пользователя, читайте по ссылке)
- -MessageTitle — Текст самого сообщения
Еще есть возможность воспользоваться скриптом гуляющем по интернету:
$Sessions = Get-TerminalSession -ComputerName «Имя сервера»
ForEach ($Session in $Sessions) <
Send-RDUserMessage -HostServer $Session.ServerName -UnifiedSessionID $Session.UnifiedSessionID -MessageTitle $MessageTitle -MessageBody $MessageText
>
$ConnectionBroker = «»
$SessionHostCollection = «Терминал»
$MessageTitle = «От кого)) »
$MessageText = «Текст «
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 ферму, то при выполнении скрипта получите сообщение
Отправка сообщений с помощью msg.exe
Сегодня я хочу вам рассказать о том, как можно отправить сообщение по сети с помощью msg.exe (утилита в Windows для осуществления передачи сообщений).
В ОС Vista этой процедурой занималась ныне устаревшая команда net send (консольное приложение, входящее в состав некоторых версий ОС Windows, предназначенное для отправки сообщений по локальной сети другому пользователю или компьютеру), которая больше не поддерживается.
Синтаксис msg.exe
Параметры msg.exe
имя сеанса — Имя сеанса
ID сеанса — Идентификатор сеанса
@имя файла — Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение
* — Отправить сообщение всем сеансам на указанном сервере
/SERVER:сервер — Сервер (по умолчанию — текущий)
/TIME:секунд — Интервал ожидания подтверждения от получателя
/V — Отображение информации о выполненных действиях
/W — Ожидание ответа от пользователя, полезно вместе с /V
сообщение — Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN
Использование утилиты msg.exe на примере отправки сообщения терминальным пользователям в OS Windows Server 2008 
В этом примере из командной строки (cmd.exe) я отправил сообщение test1 терминальному пользователю с именем Администратор. Если бы заменил названия пользователя и указал бы команду msg * test1, то сообщение передалось бы всем пользователям терминального сервера.
При частоте использовании утилиты, можно сохранить значение в файле с расширением .bat (как создать файл с таким расширением, читайте здесь, хотя, если вы администрируете сервер, вам скорее всего не потребуется эта статья).
Например, если вам необходимо в течении дня два-три раза сообщить пользователям 1С о необходимости закрыть программу. К сожалению, при использовании командной строки, русские шрифты могут отображаться некорректно, поэтому могу предложить в качестве решения проблемы 2 варианта:
- Вариант отправки каждому пользователю по отдельности (если их конечно достаточно малое количество).
Для этого вызываем диспетчер задач, находясь в окне терминала или непосредственно на самом сервере (ctrl+shift+esc), переходим на вкладку «Пользователи», выделяем нужного нам и правой кнопкой мыши выбираем пункт «Отправить сообщение».
- Этот вариант подразумевает работу в командной строке с использованием Windows PowerShell.
Команды пишутся по тому же принципу, как и в cmd.exe, но здесь есть простая настройка отображения шрифтов (правой кнопкой мышки в верхнем левом углу и выбор пункта «Свойства»)
Переходим на вкладку «Шрифт» и меняем значение на LucidaConsole
Теперь шрифты кириллицы будут отображаться корректно.
На этом пока все, что я хотел рассказать вам сегодня. Спасибо, что читали.