Windows server 2012 net send

Windows server 2012 net send

Добрый день! Уважаемые читатели и гости 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 — Текст самого сообщения
Читайте также:  Альтернатива coreldraw для windows

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

$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 ферму, то при выполнении скрипта получите сообщение

Команда Net Send

Примеры, переключатели и многое другое

Команда net send – это команда командной строки, используемая для отправки сообщений пользователям, компьютерам и псевдонимам сообщений в сети.

Windows XP была последней версией Windows, которая включала команду net send. Команда msg заменяет команду net send в Windows 10, Windows 8, Windows 7 и Windows Vista.

Команда net send является одной из многих команд net.

Доступность команды Net Send

Команда net send доступна из командной строки в Windows XP, а также в более старых версиях Windows и в некоторых операционных системах Windows Server.

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

Синтаксис команды Net Send

net send /users message [/help ] [ /? ]

См. Как читать синтаксис команды, если вы не уверены, как читать синтаксис команды net send, как написано выше или показано в таблице ниже.

Параметры команды Net Send

Item Объяснение
имя Этот параметр указывает имя пользователя, имя компьютера или имя сообщения (определяется с помощью команды net name), которому вы хотите отправить сообщение .
* Используйте звездочку, чтобы отправить сообщение каждому пользователю в вашем текущем домене или рабочей группе.
/домен Этот параметр можно использовать отдельно для отправки сообщения всем именам в текущем домене.
имя_домена Используйте эту опцию с /domain , чтобы отправить сообщение всем пользователям в указанном доменном имени .
/пользователей Этот параметр отправляет сообщение всем пользователям, подключенным к серверу, с которого выполняется команда net send.
сообщение Этот параметр команды net send, очевидно, необходим и указывает точный текст сообщения, которое вы отправляете. сообщение может содержать не более 128 символов и должно быть заключено в двойные кавычки, если оно содержит косую черту.
/помощь Используйте этот переключатель для отображения подробной информации о команде net send. Использование этого параметра аналогично использованию команды net help для команды net send: net help send .
/? Переключатель справки также работает с командой net send, но отображает только основной синтаксис команды. Выполнение net send без параметров равнозначно использованию переключателя /? .

Вы можете сохранить выходные данные команды net send в файле, используя оператор перенаправления с командой.

Примеры команд Net Send

В этом примере net send используется для отправки . Пожалуйста, немедленно перейдите к CR103 для сообщения об обязательном собрании всем членам * текущей рабочей группы или домена.

Здесь команда net send используется для отправки всем членам текущего сервера /users сообщения Будет ли человек с открытым клиентским файлом A7/3 сохранить свою работу и закрыть ее? Спасибо! . Сообщение в кавычках, потому что был использован слеш.

Хотя это совершенно непрофессиональный способ уволить кого-то, в этом примере net send команда используется для отправки Майку Смиту с именем пользователя smithm сообщения, которое он, вероятно, не хотел слышать: Ты уволен! .

Net Send связанные команды

Команда net send является подмножеством команды net и, таким образом, аналогична ее родственным командам, таким как net use, net time, net user, net view и т. Д.

Дополнительная справка по команде Net Send

Если команда net send не работает, вы можете увидеть следующую ошибку в командной строке:

Есть два способа исправить эту ошибку, но только один – постоянное решение …

Вы можете переместить текущий рабочий каталог, указав путь к файлу cmd.exe , чтобы командная строка знала, как выполнить команду net send.Сделайте это с помощью команды cd (она обозначает изменение каталога):

Оттуда вы можете запустить команду net send, не увидев этой ошибки. Однако это только временное решение, которое вам придется делать постоянно для каждой команды. Реальная проблема заключается в том, что текущая переменная среды не была правильно настроена.

Вот как восстановить правильную переменную среды, необходимую для командной строки, чтобы понять ваши команды в Windows XP:

Откройте меню Пуск и нажмите правой кнопкой мыши Мой компьютер .

Выберите Свойства .

Перейдите на вкладку Дополнительно .

Нажмите кнопку Переменные среды .

Выберите Путь из списка переменных в разделе Системные переменные .

Нажмите Изменить в разделе Системные переменные .

В текстовом поле Значение переменной найдите все пути, которые читаются точно , например:

C: \ Windows \ system32

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

Один уже там? Если это так, то, скорее всего, это второй, который читает «% SystemRoot%» в начале. Если это так, измените эту часть пути на «C: \ Windows \ system32» (если ваша установка Windows находится на диске C:, что, скорее всего, верно).

Например, вы должны изменить % SystemRoot% \ system32 на C: \ Windows \ system32 .

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

Если это поможет, вы можете скопировать весь текст в Блокнот и сделать там редактирование. Когда вы закончите, просто вставьте отредактированное значение переменной обратно в это текстовое поле, чтобы перезаписать существующий текст.

Нажмите ОК несколько раз, чтобы сохранить изменения и выйти из окна «Свойства системы».

Если команды net send работают в командной строке с «успешным» сообщением, но всплывающее окно не отображается на компьютерах, на которые отправлено сообщение, убедитесь, что на принимающих компьютерах включена служба Messenger.

Send a message to all logged in users Windows Server 2012 R2

A simple task in prior versions — open task manager, users, select all, send a message.

In 2012 — you can’t select more than one user. So if I want to send them a message, I’d have to do it one at a time.

I’ve tried msg command in elevated command prompt but it errors out — permissions setting which is unlocatable (not sure if that’s a word but I like it) in 2012.

Why is such a simple task so difficult. I would go on a further rant about 2012 but I’ll curb my tongue. Suffice to say — the enemy of good is better.

Thanks in advance

Since you were using the task manager, I’m assuming you were doing this on the server itself ? If you open a command prompt, type the ‘msg’ command to get the syntax.

I think it would be:

Msg * «Buy Me Lunch»

16 Replies

What’s wrong with Server 2012 R2? I found it to be excellent. 2012 was terrible but R2 is great.

I’m guessing Powershell would be a good way to go for this. Create a script that uses https://psterminalservices.codeplex.com/ and checks for each logged on user and sends a message to all of them.

Since you were using the task manager, I’m assuming you were doing this on the server itself ? If you open a command prompt, type the ‘msg’ command to get the syntax.

I think it would be:

Msg * «Buy Me Lunch»

i think windows server 2k12 R2 is one of the best windows servers ever made!

kevin’s answer is correct.. give it a shot

In my original post I mentioned using the msg command but I’m getting an error.

The message pops up for me but no one else — yes I’m logged in as an adminitrative user and opening cmd prompt as admin.

Error sending message to session Console : Error 2147500058

Error [2147500058]:The server process could not be started because the configure

d identity is incorrect. Check the username and password.

When I research that, I get posts about setting permissions but they all refer to 2008.

Upon further testing the message is going through to the users, I’m not sure what the error message is from. Thanks to all.

If you are in a session while doing this, I suspect the problem is sending the message to either your own session, or the ‘console’, which is I think session #1.

So, if you typed:

It would be curious if you get the same error. The ‘*’ sends to every session, so one of them is having a problem. But oh well, it works !

to send msg please run cmd as administrator

What is the syntax to send this to all logged on Domain users on their own individual PC’s?

How do you assign permissions for a normal TS user to send messages?

Here is the MSG Syntax — If you type MSG by itself in Command Prompt you get this along with more details on how to use it.

MSG [Username Sessionname Sessionid @filename] This allows you to send a message to very specific users, or to send to all sessions, skip this part and put *

Sending to all users would look like this.

MSG * /Server: Please Log Out ASAP!

You can also leave Servername blank and it will send to the current server you are connected to.

MSG * Please Log Out ASAP

You will see something like this (since it is going to all users)

msg * (type the message)

the Only problem with this I just want to do to the people in this district, there 12 districts. ours along have 2500 users.

This simple task should be built in.

I tried kevins answer. but it is not displaying clients screen.. any gp update need?

To notify users about a server reboot, you can use the -c (comment) modifier on the shutdown command to send a message to all users that the server is rebooting.

On Server 2016 the wildcard is not working.

Doing this on the domain controller, logged in as domain admin with elevated CMD. For this post we will hypothesize my domain controller is named «ID10T»
MSG * «This is a test» — will result in only the local machine receiving the message.
MSG * /SERVER:ID10T «This is a test» — will also result in only the local machine receiving the message.
MSG /SERVER:* «This is a test» — — first asks to enter message to send; end message by pressing CTRL-Z on a new line, then ENTER. So I type the message again «This is a test» and press ENTER to get a new line, then press CTRL-Z and ENTER again. Now I get this error: Error 1722 getting session names.

Doing this on my workstation, from a domain admin account, with elevated CMD.
MSG * «This is a test» — will result in only the local machine receiving the message.
MSG * /SERVER:ID10T «This is a test» — will result in only the domain controller receiving the message.
MSG /SERVER:* «This is a test» — will first ask me to enter the message to send, do the CTRL-Z on new line & ENTER again. Same error as above, Error 1722.

My goal is to send a message to all users. I can send direct messages to a user or workstation using the following, but have no luck using the wildcard * for all.

For this example, I am sending the message from the domain controller, logged in as a domain admin with elevated CMD. The user I’m sending the message to is logged in to workstation name «PEBKAC» and the user name is «PICNIC» (notice a trend yet?)
MSG /SERVER:PEBKAC Picnic «This is a test» — will display the message on that workstation for the user.
MSG /SERVER:* Picnic «This is a test» — Error 1722 getting session names.

So my next attempt is to use the file that I define all my users in there, then call the file in the syntax. I cannot find the information on using this file anywhere online, where do I store the file and in what directory? What fields are required in the file and in what format? Perhaps an example file would be useful also as a template. Any help you can offer my friends, would be greatly appreciated!

Читайте также:  Обновление windows которое вызывает ошибку
Оцените статью