Как отправить сообщение всем пользователям терминального сервера windows server 2012

Бывают ситуации, что вам необходимо оповестить всех пользователей терминального сервера, о необходимости в его обслуживании. как отправить сообщение всем пользователям RDS фермы

Обновлено 07.06.2019

message logo

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами научились устанавливать библиотеку  VCRUNTIME140.dll в операционных системах Windows. Сегодня я переключу наше внимание с клиентских ОС на серверные. Наверняка многие из обычных людей , а тем более системные администраторы знают, что такое терминальные службы, RDS ферма или удаленный стол (Удаленка). Это уже неотъемлемая часть бизнес процессов, для многих организаций. Бывают ситуации, что вам необходимо оповестить всех пользователей терминального сервера, о необходимости в его обслуживании. По мимо корпоративной почты вы можете, это делать и средствами Windows и сегодня я покажу, как отправить сообщение всем пользователям RDS фермы.

Постановка задачи

Необходимо научиться отправлять сообщение на терминальный стол всем пользователям, кто на нем работает, иметь возможность вводить текст сообщения. Данный функционал, очень полезен, когда у вас зависают пользовательские сессии и вам необходимо перезагрузить сервер, для его восстановления, но так как на нем есть активные сессии, то желательно бы предупредить сотрудников, чтобы они сохранили все свои данные.

Методы отправки сообщения на RDS ферме

  • Отправка сообщение, через диспетчер задач
  • Отправка сообщения через утилиту командной строки msg
  • Отправка сообщения через командлеты PowerShell

Как отправить предупреждение пользователям RDS через диспетчер задач

Во времена терминальных служб на Windows Server 2008 R2, была замечательная возможность массовой отправки сообщений для всех пользователей фермы и делалось, это штатно из диспетчера задач. В 2008R2, когда вы запустите диспетчер задач и перейдете на вкладку «Пользователи», то у вас была возможность выделить их всех, щелкнуть правой кнопкой мыши и из контекстного меню выбрать пункт «Отправить сообщение».

Отправка сообщений в Windows Server 2008 r2

У вас откроется окно «Отправка сообщений», где вы можете задать заголовок сообщения и его текст. После чего нажмите кнопку «Ок».

Отправка сообщений через диспетчер задач

В результате все пользователи данного удаленного стола, получат вот такое сообщение в виде всплывающего окна.

Пример отправленного сообщения на RDS

Точно так же в Windows Server 2008 R2 вы могли произвести отправку оповещений, через оснастку «Диспетчер служб удаленных рабочих столов»

Диспетчер служб удаленных рабочих столов

К сожалению начиная с Windows Server 2012 R2, данную возможность для массовой рассылки из диспетчера задач убрали, вы теперь не можете выделить всех пользователей.

Использование утилиты MSG

Есть такая замечательная утилита командной строки msg. Что хорошо, вы ей можете пользоваться на любом компьютере, хоть на Windows 8.1. Откройте cmd, желательно от имени администратора и просто введите:

У вас появится справка по утилите. Конструкция команды будет такой MSG {<пользователь> | <имя сеанса> | <ID сеанса> | @<имя файла> | *} [/SERVER:<сервер>] [/TIME:<секунд>] [/V] [/W] [<сообщение>]

  • <пользователь> Имя пользователя.
  • <имя сеанса> Имя сеанса. Удобно если нужно отправить конкретному сеансу.
  • <ID сеанса> Идентификатор сеанса.
  • @<имя файла> Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение.
  • * Отправить сообщение всем сеансам на указанном сервере.
  • /SERVER:<сервер> Сервер (по умолчанию — текущий).
  • /TIME:<секунд> Интервал ожидания подтверждения от получателя.
  • /V Отображение информации о выполненных действиях.
  • /W Ожидание ответа от пользователя, полезно вместе с /V.
  • <сообщение> Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN.

Справка утилиты msg

Если нужно отправить сообщение всем людям локально с того же сервера, где они работают, то просто введите:

msg * Пожалуйста сохраните все свои файлы и завершите корректно ваши сессии в программах. Сервер будет перезагружен, через 5 минут С уважением, отдел технической поддержки

Отправка сообщения через msg

Вот так, например в Windows Server 2019 выглядит подобное оповещение на RDS ферме.

Пример сообщения отправленного через msg

Для отправки оповещения на удаленный сервер вы должны использовать вот такую конструкцию:

msg * /server:svt2019s01 Пожалуйста сохраните все свои файлы и завершите корректно ваши сессии в программах. Сервер будет перезагружен, через 5 минут С уважением, отдел технической поддержки

Для отправки на несколько серверов, можно использовать вот такое построение команды:

invoke-command -computername computer1, computer2 -scriptblock {msg * «Ваш текст сообщения»}

Использование связки PowerShell и msg

(Get-ADComputer -SearchBase «OU=Workstations,DC=root,DC=pyatilistnik,DC=org» -Filter *).Name | Foreach-Object {Invoke-Command -ComputerName $_ {msg * «Текст сообщения»}

Если у вас выскакивает ошибка «Ошибка 1726 при получении имен сеанса» и сообщение не отправляется, то тут вся загвоздка в том, что у той учетной записи от имени которой открыта командная строка, просто не хватает прав. Вам нужно открыть cmd от имени пользователя у кого есть права на тот сервер.

Ошибка 1726 при получении имен сеанса

Третий метод отправки сообщения пользователям RDS через Send-RDUserMessage

Безусловно самым популярным и универсальным методом отправки оповещений пользователям удаленного рабочего стола, являются командлеты PowerShell. Одним из таких командлетов выступает Send-RDUserMessage.

Справка по командлеты Send-RDUserMessage — https://docs.microsoft.com/en-us/powershell/module/remotedesktop/send-rdusermessage?view=win10-ps

Запускаем PowerShell от имени администратора или нужного пользователя. Синтаксис будет такой:

Send-RDUserMessage -HostServer «svt2019s01.root.pyatilistnik.org» -UnifiedSessionID 1 -MessageTitle «От отдела технической поддержки» -MessageBody «Сообщение отправлено через Send-RDUserMessage. Пожалуйста сохраните все свои файлы и завершите корректно ваши сессии в программах. Сервер будет перезагружен, через 5 минут С уважением, отдел технической поддержки»

  • HostServer — Имя RDS сервера
  • -UnifiedSessionID — идентификатор сеанса, к сожалению сразу нельзя выбрать всех, обязательно указывать число (Как определить номер сеанса пользователя, читайте по ссылке)
  • -MessageTitle — Текст самого сообщения

Send-RDUserMessage пример отправки

Еще есть скрипт от Microsoft инженера https://gallery.technet.microsoft.com/scriptcenter/Send-NetMessage-Net-Send-0459d235

Еще есть возможность воспользоваться скриптом гуляющем по интернету:

  • 1 скрипт

$Sessions = Get-TerminalSession -ComputerName «Имя сервера»
ForEach ($Session in $Sessions) {
Send-RDUserMessage -HostServer $Session.ServerName -UnifiedSessionID $Session.UnifiedSessionID -MessageTitle $MessageTitle -MessageBody $MessageText
}

  • 2 скрипт
# $ConnectionBroker - Активный сервер RDCB. Если не указан, будет произведена попытка выявить его автоматически (для этого обязательно чтобы скрипт выполнялся на одном из серверов фермы RDS)
# $SessionHostCollection – Имя RD-коллекции в которой нужно вывести сообщение.

$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
}

Подробнее на https://blog.it-kb.ru/2013/11/15/remote-desktop-services-send-message-to-all-active-rds-farm-users-via-powershell

Кстати если вы неправильно развернули RDS ферму, то при выполнении скрипта получите сообщение

Get-RDUserSession : На svt2019s01.root.pyatilistnik.org не развернуты службы удаленных рабочих столов. Эту операцию можно выполнить после их развертывания. Для получения дополнительных сведений.

не развернуты службы удаленных рабочих столов

На этом у меня все. Мы рассмотрели несколько методов по массовой отправке сообщений пользователям удаленных рабочих столов. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

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

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

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

Есть такая замечательная утилита командной строки msg. Что хорошо, вы ей можете пользоваться на любом компьютере, хоть на Windows 8.1. Откройте cmd, желательно от имени администратора и просто введите:

  • <пользователь> Имя пользователя.
  • <имя сеанса> Имя сеанса. Удобно если нужно отправить конкретному сеансу.
  • <ID сеанса> Идентификатор сеанса.
  • @<имя файла> Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение.
  • * Отправить сообщение всем сеансам на указанном сервере.
  • /SERVER:<сервер> Сервер (по умолчанию – текущий).
  • /TIME:<секунд> Интервал ожидания подтверждения от получателя.
  • /V Отображение информации о выполненных действиях.
  • /W Ожидание ответа от пользователя, полезно вместе с /V.
  • <сообщение> Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN.

Если нужно отправить сообщение всем людям локально с того же сервера, где они работают, то просто введите:

Как отправлять сообщения программой msg.exe?

Windows Server 2012 находится в рабочей группе. На нем развернут терминальный сервер.

Необходимо, дать возможность пользователю (без админских прав) отправлять сообщения всем пользователям, подключенным к терминальному серверу.

Погуглил, нашел, что можно из консоли запускать программу msg.exe. Программа работает, но сообщение не доходят до пользователей (нет прав)

Как разрешить отправку сообщений пользователя (без адмниских прав) через программу msg.exe всем пользователям?

Спасибо за помощь.

user avatar

MSG не требует многого. Обычно ей для работы нужны три вещи:
1. Открытый TCP порт 445 (правда, бывают проблемы )
2. Разрешенный AllowRemoteRPC

Для этого проверяем, установлено ли значение параметра AllowRemoteRPC в ветке HKLMSYSTEMCurrentControlSetControlTerminal Server в 1. Если нет, изменяем и перегружаемся.

  1. Пользователь должен иметь привилегии для отправки сообщений:

Открываем Конфигуратор сервера узла сеансов рабочих столов (проще всего tsconfig.msc из консоли) и добавляем права пользователей именно так, как я показал на скриншоте:

введите сюда описание изображения

Update 1

В случае, если у вас версия Server 2012 R2 (в нём нет описываемой оснастки сразу) или поздний релиз Server 2012, в котором они тоже отключены (речь идёт о стандартных оснастках tsadmin.msc (Remote Desktop Services Manager, по-русски Диспетчер служб удаленных рабочих столов) и tsconfig.msc (Remote Desktop Session Host Configuration, по-русски Конфигурация узла сеансов удаленных рабочих столов), то можно использовать Server Manager или консоль редактора групповых политик (gpedit.msc), но там всё несколько, на мой взгляд, замороченнее.

Обычно поступают по-иному: возвращают эти две оснастки, используя библиотеки от Server 2012, где они есть, ли даже от Server 2008.

Всё, что нужно сделать, это скопировать в папку C:WindowsSystem32 вашего сервера соответствующие файлы оснастки:

И сделать экспорт соответствующих веток реестра

с последующим импортом.

Мы уже проделывали подобную операцию, она недеструктивна, но не у всех есть под рукой установленные серверы с рабочими оснастками. Поэтому вот комплекты (файлы + реестр) для английского и русского серверов 2012/2012 R2.

Update 2

В принципе, как следует из официальной справки, мы можем управлять данными разрешениями из WMI. Стоит лишь сделать выборку всех пользователей входящих в группу Remote Desktop Users и выставить в параметрах седьмой бит в единицу, как следует из справки. Можно набросать программу на Delphi или C#, но проще запустить powershell’овский скрипт, примерно вот такой:

Команды терминала Server: MSG

В этой статье вводится синтаксис и параметры команд msG Terminal Server.

Применяется к: Windows 10 — все выпуски
Исходный номер КБ: 186480

Сводка

MSG отправляет сообщение.

Синтаксис

Параметры

username : Идентифицирует пользователя.

sessionname : Определяет имя сеанса. Имя было создано системным администратором при настройке сеанса.

sessionID : Указывает ID сеанса.

filename : Определяет файл, содержащий список usernames , и к которому отправить sessionnames sessionIDs сообщение.

message (строка сообщений): текст сообщения, которое необходимо отправить. Если сообщение не вступило, для сообщения считыется стандартный ввод (STDIN).

/server:servername : Позволяет задан терминальный сервер. В противном случае используется текущий сервер терминала.

/time:seconds (задержка времени): задает время, которое необходимо подождать до получения подтверждения от целевого сеанса о том, что сообщение получено.

/w (подождите). Подождите ответа от целевого пользователя(ы).

/v (подробно): отображает сведения о выполняемых действиях.

/? (справка). Отображает синтаксис команды и сведения о параметрах команды.

Ограничения безопасности

Пользователь должен иметь разрешение на доступ к сообщению для сеанса.

Дополнительные замечания

Если пользователь или сеанс не указан, msg отображает сообщение об ошибке. Если вы указываете имя сеанса, он должен определить активный сеанс. Для параметров можно использовать поддиальды. Если присутствует одна подсистема (*), она указывает всех пользователей в системе.

Примеры

Отправить сообщение под названием Falafel? для всех сеансов для пользователя MIKES введите:

Чтобы отправить сообщение на сеанс MODEM02, введите:

Чтобы отправить сообщение на сеанс 12, введите:

Чтобы отправить сообщение на все сеансы, содержащиеся в списке userLIST файла, введите:

Отправка текста в файл MSG. DAT в качестве сообщения для всех сеансов для имени пользователя TERRYJ введите:

Чтобы отправить сообщение всем зарегистрированным пользователям, введите:

Чтобы отправить сообщение всем пользователям с периодом подтверждения в 10 секунд, введите:

Сообщения не стоят в очереди на экране Клиента. Может быть полезно использовать TIME: параметр, чтобы начальные сообщения истекли и были заменены новыми сообщениями.

  • Remove From My Forums
  • Общие обсуждения

  • 1. Как в 2012 терминале послать сообщение или завершить сеанс сразу нескольких пользователей?

    В 2008 R2 все было просто, в Task Manager c помощью клавиши Ctrl можно было выбрать нужных пользователей, щелкнуть правой кнопкой и выбрать или logoff или send message. А в 2012 выбрать группу никак не получается, указанные операции
    можно проделать только с одним пользователем. Есть како-нибудь решение?

    2. В 2012 терминале пользователи не могут послать сообщение в другую сессию, у них нет этого пункта меню в Task Manager.

    Где настраивать такую возможность в 2008 R2 я знаю, а в 2012 это вообще возможно или тоже вырезали?

    • Изменен тип

      1 апреля 2013 г. 10:49
      Нет действий

MSG не требует многого. Обычно ей для работы нужны три вещи:
1. Открытый TCP порт 445 (правда, бывают проблемы )
2. Разрешенный AllowRemoteRPC

Для этого проверяем, установлено ли значение параметра AllowRemoteRPC в ветке HKLMSYSTEMCurrentControlSetControlTerminal Server в 1. Если нет, изменяем и перегружаемся.

  1. Пользователь должен иметь привилегии для отправки сообщений:

Открываем Конфигуратор сервера узла сеансов рабочих столов (проще всего tsconfig.msc из консоли) и добавляем права пользователей именно так, как я показал на скриншоте:

введите сюда описание изображения

Update 1

В случае, если у вас версия Server 2012 R2 (в нём нет описываемой оснастки сразу) или поздний релиз Server 2012, в котором они тоже отключены (речь идёт о стандартных оснастках tsadmin.msc (Remote Desktop Services Manager, по-русски Диспетчер служб удаленных рабочих столов) и tsconfig.msc (Remote Desktop Session Host Configuration, по-русски Конфигурация узла сеансов удаленных рабочих столов), то можно использовать Server Manager или консоль редактора групповых политик (gpedit.msc), но там всё несколько, на мой взгляд, замороченнее.

Обычно поступают по-иному: возвращают эти две оснастки, используя библиотеки от Server 2012, где они есть, ли даже от Server 2008.

Всё, что нужно сделать, это скопировать в папку C:WindowsSystem32 вашего сервера соответствующие файлы оснастки:

c:windowssystem32tsadmin.dll
c:windowssystem32tsconfig.dll
c:windowssystem32wts.dll
c:windowssystem32tsconfig.msc
c:windowssystem32tsadmin.msc
c:windowssystem32entsconfig.resources.dll
c:windowssystem32entsadmin.resources.dll

И сделать экспорт соответствующих веток реестра

HKEY_LOCAL_MACHINESOFTWAREMicrosoftMMCSnapInsFX:{80aaa290-abd9-9239-7a2d-cf4f67e42128}
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMMCSnapInsFX:{3FCE72B6-A31B-43ac-ADDA-120E1E56EB0F}

с последующим импортом.

Мы уже проделывали подобную операцию, она недеструктивна, но не у всех есть под рукой установленные серверы с рабочими оснастками. Поэтому вот комплекты (файлы + реестр) для английского и русского серверов 2012/2012 R2.

Update 2

В принципе, как следует из официальной справки, мы можем управлять данными разрешениями из WMI. Стоит лишь сделать выборку всех пользователей входящих в группу Remote Desktop Users и выставить в параметрах седьмой бит в единицу, как следует из справки. Можно набросать программу на Delphi или C#, но проще запустить powershell’овский скрипт, примерно вот такой:

$acc = @(Get-WmiObject -Namespace RootCIMv2TerminalServices -Query "SELECT * FROM Win32_TSAccount WHERE TerminalName='RDP-TCP' AND AccountName='BUILTIN\Remote Desktop Users'") 
# обратились к Win32_TSAccount, сделали выборку всех пользователей терминалов
Foreach($account In $acc)
{
    $account.ModifyPermissions(7,1) 
# устанавливаем седьмой бит в единицу

}

P.S. В принципе, можно всё запихать в powershell’овский скрипт:

  • Открытие порта (можно через netsh)
  • Проверка наличия ключа в реестре и его изменение/создание
  • установка привилегий

 / 

Отправка сообщений с помощью msg.exe

14.12.2012

Сегодня я хочу вам рассказать о том, как можно отправить сообщение по сети с помощью msg.exe (утилита в Windows для осуществления передачи сообщений).

В ОС Vista этой процедурой занималась ныне устаревшая команда net send (консольное приложение, входящее в состав некоторых версий ОС Windows, предназначенное для отправки сообщений по локальной сети другому пользователю или компьютеру), которая больше не поддерживается.

Синтаксис msg.exe

MSG {пользователь | имя сеанса | ID сеанса | @имя файла | *}
    [/SERVER:сервер] [/TIME:секунд] [/V] [/W] [сообщение]

Параметры msg.exe

пользователь

— Имя пользователя

имя сеанса — Имя сеанса

ID сеанса — Идентификатор сеанса

@имя файла — Файл, содержащий список имен пользователей, сеансов или идентификаторов сеансов, которым отправляется сообщение

* — Отправить сообщение всем сеансам на указанном сервере

/SERVER:сервер — Сервер (по умолчанию — текущий)

/TIME:секунд — Интервал ожидания подтверждения от получателя

/V — Отображение информации о выполненных действиях

/W — Ожидание ответа от пользователя, полезно вместе с /V

сообщение — Отправляемое сообщение. Если не указано, выдается запрос или принимается ввод из STDIN

/? — Показывает справку

Использование утилиты msg.exe на примере отправки сообщения терминальным пользователям в OS Windows Server 2008Отправка сообщений с помощью msg.exe

В этом примере из командной строки (cmd.exe) я отправил сообщение test1 терминальному пользователю с именем Администратор. Если бы заменил названия пользователя и указал бы команду msg * test1, то сообщение передалось бы всем пользователям терминального сервера.

При частоте использовании утилиты, можно сохранить значение в файле с расширением .bat (как создать файл с таким расширением, читайте здесь, хотя, если вы администрируете сервер, вам скорее всего не потребуется эта статья).

Например, если вам необходимо в течении дня два-три раза сообщить пользователям 1С о необходимости закрыть программу. К сожалению, при использовании командной строки, русские шрифты могут отображаться некорректно, поэтому могу предложить в качестве решения проблемы 2 варианта:

  • Вариант отправки каждому пользователю по отдельности (если их конечно достаточно малое количество).

Для этого вызываем диспетчер задач, находясь в окне терминала или непосредственно на самом сервере (ctrl+shift+esc), переходим на вкладку «Пользователи», выделяем нужного нам и правой кнопкой мыши выбираем пункт «Отправить сообщение».

msg_2

  • Этот вариант подразумевает работу в командной строке с использованием Windows PowerShell.

Команды пишутся по тому же принципу, как и в cmd.exe, но здесь есть простая настройка отображения шрифтов (правой кнопкой мышки в верхнем левом углу и выбор пункта «Свойства»)

msg_3

Переходим на вкладку «Шрифт» и меняем значение на LucidaConsole

msg_3

Теперь шрифты кириллицы будут отображаться корректно.

На этом пока все, что я хотел рассказать вам сегодня. Спасибо, что читали.

0 / 0 / 0

Регистрация: 13.05.2016

Сообщений: 3

1

Server 2012

Отправка сообщений всем пользователям, и ОТКЛЮЧЕННЫМ в том числе

18.11.2016, 14:23. Показов 18203. Ответов 4


Необходимо отправлять сообщение на терминальном сервере ВСЕМ пользователям. Команда msg * «Текст сообщения» отправляет только активным пользователям терминала. Если использовать диспетчер задач, сообщения отправляются отключены пользователям, но нет возможности отправлять сразу всем пользователям терминала. Если нет возможности решить проблему штатным способом, может есть сторонние утилиты для отправки сообщений?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



6 / 6 / 2

Регистрация: 01.11.2016

Сообщений: 66

18.11.2016, 15:06

2

Цитата
Сообщение от svarik
Посмотреть сообщение

решить проблему штатным способом

Через диспетчер задач. С помощью CTRL выделяете нужных пользователей. Если сразу всем- то левой кнопкой мыши на «первом» пользователе, затем с нажатым SHIFT — на «последнем». CTRL+A — не работает.

Цитата
Сообщение от svarik
Посмотреть сообщение

сторонние утилиты для отправки сообщений?

любой мессенджер



0



0 / 0 / 0

Регистрация: 13.05.2016

Сообщений: 3

18.11.2016, 17:21

 [ТС]

3

alex-dl, В Server 2012 выделение нескольких пользователей недоступно! В предыдущий версиях без проблем. Если можно название мессенджера для примера



0



6 / 6 / 2

Регистрация: 01.11.2016

Сообщений: 66

18.11.2016, 17:44

4

Цитата
Сообщение от svarik
Посмотреть сообщение

В Server 2012 выделение нескольких пользователей недоступно!

не знал, спасибо что просветили.
нет терминального 2012 сервера под рукой. Но интересно, через диспетчер служб удаленных рабочих столов тоже не выделяет?

Цитата
Сообщение от svarik
Посмотреть сообщение

название мессенджера для примера

для примера http://www.winsent.ru/rus/messenger/
http://www.cezeo.ru/products/lantalk-net/
одни из первых по запросу «мессенджер для сервера терминалов»

Сам сижу на openfire, но в терминале не было необходимости его использовать.



0



0 / 0 / 0

Регистрация: 13.05.2016

Сообщений: 3

18.11.2016, 18:17

 [ТС]

5

Цитата
Сообщение от alex-dl
Посмотреть сообщение

через диспетчер служб удаленных рабочих столов тоже не выделяет?

Пробовал, тоже не выделяет((



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.11.2016, 18:17

5

Для того, что бы через powershell отправить сообщение пользователю нужно иметь работающий PSRemoting. Если вы не знаете что это, то коротко говоря это возможность удаленного выполнения команд. Эта возможность рассматривалась тут. Коротко говоря если все получатели пользователи домена, а вы являетесь администратором на их компьютере, то единственная настройка, которая вам понадобится это включить WinRM:

Enable-PSRemoting

Если собираетесь использовать IP, или не в домене, то вы будете использовать не Kerberos, а NTLM и нужно сделать следующее:

Enable-PSRemoting
Set-Item wsman:localhostClientTrustedHosts -value *

Если в последующем будут ошибки, то стоит прочитать статью, т.к. настроек может понадобится больше.

Отправление сообщение пользователю компьютера через WinRM

Для отправки сообщения есть старая утилита msg. Сообщение, которое получит пользователь, будет popup (всплывающее на главном экране). Мы можем проверить его так:

msg * "Ожидается перезагрузка сервера 1С"

Для того что бы отправить такое сообщение одному или нескольким пользователям через powershell нужно использовать:

Invoke-Command -ComputerName AD,AD2 -ScriptBlock {msg * "1C Restart in 10 minutes"}

Где:
ComputerName — имена одного или нескольких компьютеров, на которые будут отправлены сообщения. Можно и IP, но с оговорками выше…
Scriptblock — скрипт, который мы отсылаем на компьютеры. В нашем случае это msg

Сообщение будет выглядеть так:

Powershell отправка сообщения пользователю

Отправка сообщений всем пользователям компьютеров в AD

Сначала получим все имена всех компьютеров в домене и присвоим переменную. Если мой домен называется domain.local, то командлет будет выглядеть так:

$computers = (Get-ADComputer -SearchBase "DC=domain,DC=local" -Filter *).Name

Мы можем добавить OU, если у нас нужные компьютеры находятся в отдельной организационной единице:

$computers = (Get-ADComputer -SearchBase "OU=AllComputers,DC=domain,DC=local" -Filter *).Name

Далее, для каждого компьютера в переменной используем такую команду powershell:

$computers | ForEach {Invoke-Command -ComputerName $_ {msg * "1C Restart in 2 minutes"}}

Сообщения получат все пользователи, которые залогинены.

Отправка сообщений через powershell пользователям терминального сервера

Для отправки сообщения терминальным пользователям сначала нужно получить список их сессий:

$session = Get-RDUserSession -ConnectionBroker "rdcb.fixmypc.ru"

Затем мы можем отправить сообщения:

$message = "Ожидается перезагрузка сервера в течении 10 минут"
$session | Send-RDUserMessage -HostServer "rdsh.domain.local" -MessageBody $message

Теги:

#powershell

#ad

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Как отправить скан с принтера на компьютер windows 10
  • Как отправить программу в автозагрузку в windows 10
  • Как отправить приглашение удаленному помощнику windows 10
  • Как отправить приглашение удаленного помощника windows
  • Как отобразить язык ввода на панели задач windows 7

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии