Сообщение по локальной сети. Как отправить сообщение на все компьютеры в локальной сети? Команда отправки текстовых сообщений Net send

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

Формат командной строки:

MSG {пользователь | имя сеанса | ID сеанса | @имя файла | *} [сообщение]

Описание параметров командной строки:

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

Важно!

Нынешняя реализация msg.exe прекрасно подходит для обмена сообщениями между сеансами локальных и терминальных пользователей в пределах одной системы, однако, в случаях обмена между разными компьютерами локальной сети, потребуется изменить некоторые настройки безопасности, принятые по умолчанию в операционных системах Windows Vista, 7 и более поздних.

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

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

Это означает, что на компьютере, где должно приниматься посылаемое сообщение, невозможно получить информацию о вошедших в систему пользователях. Причиной может быть то, что брандмауэр блокирует входящие соединения, недостаточны права пользователя по отношению к удаленной системе, запрет удаленного вызова процедур в параметрах службы сервера терминалов. Как минимум, для обмена сообщениями с использованием команды msg между компьютерами, необходимо иметь учетную запись пользователя, действительную по отношению к удаленной системе и выполнить следующие настройки:

  • на каждом компьютере, которому будут отправляться сообщения, добавить в раздел реестра HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server параметр AllowRemoteRPC типа REG_DWORD и равный 1 Для изменения настроек можно использовать.reg-файл следующего содержания:

    Windows Registry Editor Version 5.00
    "AllowRemoteRPC"=dword:00000001

    В ОС Windows Vista, Windows 7, 8, 10 ключ реестра AllowRemoteRPC существует, но имеет значение равное 0 , что необходимо исправить. Для применения изменений требуется перезагрузка.

  • поскольку для обмена сообщениями утилита msg.exe использует протокол SMB (Server Message Block), на каждом компьютере, которому будут отправляться сообщения, должен быть открыт TCP порт 445

    Примеры использования MSG :

    msg * /server:Server "Тестовое сообщение " - отправить тестовое сообщение всем пользователям компьютера Server

    msg * /server:192.168.0.1 "Тестовое сообщение " - отправить тестовое сообщение всем пользователям компьютера с IP-адресом 192.168.0.1

    msg RDP-Tcp#0 /server:TSServer "Тестовое сообщение" - отправить тестовое сообщение пользователю терминальной сессии с именем RDP-Tcp#0 на компьютере TSServer

    msg console /server:Windows7 "Тестовое сообщение" - отправить тестовое сообщение текущему локальному пользователю компьютера Windows7

    msg console "Тестовое сообщение" - отправка тестового сообщения от пользователя сеанса RDP локальному пользователю. Если эта команда выполняется не пользователем терминальной сессии, то сообщение будет отправлено локальным пользователем самому себе.

    Для выполнения команды msg от имени другого пользователя можно воспользоваться утилитой PSExec из пакета PSTools или штатным средством runas.exe

    psexec -u otheruser -p otherpass msg * /server:win10 TEST message

    runas /user:otheruser "msg * /server:win10 Test message"

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

    Проверьте, поддерживает ли система команду msg . Функционал этой команды во многом аналогичен функционалу неиспользуемой команды net send . Но эта команда работает только в профессиональной и корпоративной версиях Windows. Если вы работаете в Windows Домашняя, обновите систему до версии Профессиональная или Корпоративная, чтобы получить возможность пользоваться командой msg .

    • Чтобы узнать версию Windows, нажмите ⊞ Win + Pause или щелкните правой кнопкой мыши по «Компьютер» и выберите «Свойства». Версия Windows отобразится в разделе «Издание Windows».

    Откройте командную строку. Как и net send , команда msg запускается из командной строки. Командная строка запускается разными способами (в зависимости от версии Windows), или просто нажмите ⊞ Win и введите cmd.

    • Windows Vista/7: откройте командную строку из меню «Пуск».
    • Windows 8.1/10: щелкните правой кнопкой мыши по кнопке «Пуск» и выберите «Командная строка».
    • Windows 8: нажмите ⊞ Win + X и выберите «Командная строка».
  • Введите команду. Введите msg и нажмите Пробел . Далее нужно ввести информацию, которая содержит текст и направление сообщения.

  • Определите получателя сообщения. По сравнению с net send , команда msg обладает дополнительными опциями.

    • msg имя пользователя – введите имя конкретного пользователя.
    • msg сеанс – введите имя конкретного сеанса.
    • msg ID сеанса – введите идентификатор конкретного сеанса.
    • msg @ filename – введите имя файла, который содержит список имен пользователей, сеансов и/или идентификаторов сеансов. Полезно для отправки сообщений сотрудникам отделов.
    • msg * – сообщение будет отправлено всем пользователям, которые подключены к серверу.
  • Укажите сервер, пользователям которого нужно отправить сообщение (если хотите). Если нужно отправить сообщение пользователю, который подключен к другому серверу, после информации о получателе введите информацию о сервере. Если сервер не указан, сообщение будет отправлено на текущий сервер.

    • msg * /server: имя сервера
  • Задайте ограничение по времени (если хотите). Можно задать ограничение по времени, чтобы указать интервал ожидания подтверждения от получателя. Временной модификатор вводится после информации о сервере (если она есть).

    • msg * /time: секунды (например, 300 секунд для пятиминутного интервала)
  • Введите текст сообщения. После ввода различных параметров введите текст сообщения. Или нажмите ↵ Enter , и система предложит ввести текст сообщения в отдельной строке.

    • Например: msg @salesteam /server:EASTBRANCH /time:600 Поздравляю с увеличением продаж в этом квартале!
  • Отправьте сообщение. Для этого нажмите ↵ Enter . Адресат получит его немедленно.

    • Команда msg предназначена для отправки сообщений пользователям терминалов, а не только разным компьютерам, подключенным к одной сети.
  • Устраните неполадки. При работе с msg можно столкнуться со следующими ошибками:

    • "msg" is not recognized as an internal or external command, operable program or batch file. (msg не распознается в качестве внутренней или внешней команды, исполняемой программы или пакетного файла). В этом случае версия Windows не поддерживает msg . Обновите Windows до версии Профессиональная.
    • Error 5 getting session names (Ошибка 5 получение имен сеансов) или Error 1825 getting session names (Ошибка 1825 получение имен сеансов). Ошибка при общении с получателем. Можно попытаться устранить такую неполадку, если на компьютере получателя открыть редактор реестра (для этого выполните команду regedit), перейти в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server и изменить значение параметра «AllowRemoteRPC» с 0 на 1.
  • столкнулся с проблемой информирования пользователей, наиболее частая причина — обновление 1С, при котором надо, чтобы все мои пользователи (а их более 160) вышли из 1С и какое-то время не заходили. Казалось бы, чего сложного, можно отправить сообщение по электронной почте, как я раньше и делал, когда у меня был офис 365, но на яндекс почте есть свои ограничения: не более 50 пользователей в списке рассылке. Если отправить большему количеству пользователей, то письмо до некоторых просто не дойдет. Отправлять по отдельности по 50 пользователей — не удобно. Вторая проблема с яндекс почтой — необходимость ввода капчи в некоторых случаях система воспринимает массовую рассылку как спам, а письма то нужные, если не предупредить пользователя он не сохраниться вовремя и могут быть проблемы…

    В общем — стало жутко неудобно отправлять сообщения всем пользователям. Начал думать над вариантами решения.

    Первое, что пришло в голову: , но выявилось несколько неудобств:

    • Сообщения поступают примерно в течении 30 минут на 160 рабочих мест, это очень долго.
    • Сообщение выходит только на панель задач, если пользователь работает через удаленный рабочий стол — сообщение он увидит не сразу.
    • Надо поддерживать работоспособность агентов касперского на рабочих машинах пользователя, иначе сообщения не дойдет вообще.

    Второй вариант: установить какой-нибудь мессенджер, но тут тоже возникает несколько неудобств.

    • Есть очень много мессенджеров, они не универсальны, нельзя слать сообщения друг другу между мессенджерами.
    • Хорошие мессенджеры — платные.
    • Сообщения не выскакивают поверх всех окон, а если надо сообщить что-то срочное и важное, то это полезное свойство сообщения.
    • Требуется установка и настройка этих самых мессенджеров, а также — обучение пользователей новому программному обеспечению.

    В итоге я на командной строке Windows, есть команды net send и msg для отправки сообщений на все компьютеры в локальной сети. Работает все очень просто, открываешь командную строку, пишешь команду, на компьютер, имя которого ты указал в тексте команды, приходит сообщение. Причем сообщение выскакивает поверх всех окон, не требуется регистрация, и все совершенно бесплатно.

    Выглядит команда для отправки сообщений на один компьютер в локальной сети так:

    msg * /server:имя_компьютера «Тестовое сообщение, нажмите ОК»

    Составил список компьютеров, дальше немного нудная работа по созданию однотипных команд в одном txt файле, но делается быстро через копировать-вставить. Главное составить список компьютеров. В домене это делается достаточно просто через оснастку «Пользователи и компьютеры», правой клавишей под списком компьютеров, затем «Экспортировать список» сразу в ТХТ файл. Так как у меня порядка 160 компьютеров в домене, я подошел к вопросу немного более творчески, не стал делать «копировать-вставить», а сделал в уже имеющемся списке компьютеров автозамену первой буквы в имени компьютера на msg * /server: + первая буква в имени компьютеров, на мою удачу она у всех была одинаковая. Аналогично для второй части, но только с последней буквой имени компьютера (последняя буква в имени компьютера + «Тестовое сообщение, нажмите ОК» ), в итоге получил ТХТ файл со списком команд. Поменял расширение файла с txt на bat и запустил на выполнение. В итоге все компьютеры в домене получили «тестовое сообщение, нажмите ОК».

    К сожалению, вне домена такая команда не работает, а, так как я задачу выполнил, дальше экспериментировать было просто не рационально. Отправить сообщения на компьютеры в рабочей группе у меня не получилось, но у меня таких компьютеров единицы. Им можно отправить сообщение и по почте, или в том же касперском, или через какой-нибудь мессенджер. Пусть это будет тема для одной из следующих записей.

    В итоге, что я получил: 1 файл, в котором можно быстро поменять текст сообщения и с помощью которого я могу отправить бесплатно любое сообщение всем в домене. Вроде супер, но есть все же пара минусов:

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

    Тем не менее, плюсы перекрывают все минусы:

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

    Буду рад любым замечаниям, предложениям, комментариям)

    Примечание

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

    Команда отправки текстовых сообщений Net send

    Текстовые сообщения по локальной сети можно отправлять не только в специальных программах (Radmin, Nassi), но и из командной строки Windows XP. Команда Net send служит для отправки текстовых сообщений другому компьютеру, доступному в сети. Однако, для того, чтобы команда работала, первоначально необходимо включить службу доставки сообщений. Для этого зайдите в Панель управления . Откройте папку Администрирование, Службы . Найдите в списке службу сообщений (рис. 20.9).

    Рис. 20.9.

    Откройте ее свойства. Выберите значение Авто из списка Тип запуска, если вы хотите, чтобы служба автоматически запускалась при загрузке Windows . Затем нажмите на кнопку Пуск и ОК (рис. 20.10 и рис. 20.11).

    Рис. 20.10.

    Рис. 20.11.

    Давайте рассмотрим примеры использования команды net send при отправке сообщений в рабочей группе (домене) 110. Чтобы отправить сообщение всем пользователям в рабочей группе 110 введите: net send /domain:110 ПРОВЕРКА СВЯЗИ. Другой вариант подобной команды: чтобы отправить сообщение всем пользователям в вашем домене введите: net send * проверка связи (рис. 20.12 и 13)



    Рис. 20.12.

    Рис. 20.13.

    Чтобы отправить сообщение конкретному пользователю, например, 110-1, введите: net send 110-1 ПРИВЕТ! (рис. 20.14).

    Рис. 20.14.

    В Windows XP есть еще одна возможность отправки сообщений по сети. Выполните команды Панель управления-Администрирование-Управление компьютером . Дальше: Действие-Все задачи-Отправка сообщения консоли . Далее выбираете ПК и отправляете ему текст (рис. 20.15).


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

    Формат командной строки:

    MSG {<пользователь> | <имя сеанса> | | @<имя файла> | *} [<сообщение>]

    Описание параметров командной строки:

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

    Важно!

    Нынешняя реализация msg.exe прекрасно подходит для обмена сообщениями между сеансами локальных и терминальных пользователей в пределах одной системы, однако, в случаях обмена между разными компьютерами локальной сети, потребуется изменить некоторые настройки безопасности, принятые по умолчанию в операционных системах Windows Vista, 7 и 8 .

    Обычно, при стандартных настройках, отправка сообщения на удаленный компьютер, не выполняется и сопровождается сообщением

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

    Это означает, что на компьютере, где должно приниматься посылаемое сообщение, невозможно получить информацию о вошедших в систему пользователях. Причиной может быть то, что брандмауэр блокирует входящие соединения, недостаточны права пользователя по отношению к удаленной системе, запрет удаленного вызова процедур в параметрах службы сервера терминалов. Как минимум, для обмена сообщениями с использованием команды msg между компьютерами, необходимо иметь учетную запись пользователя, действительную по отношению к удаленной системе и выполнить следующие настройки:

  • на каждом компьютере, которому будут отправляться сообщения, добавить в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server параметр AllowRemoteRPC типа REG_DWORD и равный 1 Для изменения настроек можно использовать.reg-файл следующего содержания:

    Windows Registry Editor Version 5.00 "AllowRemoteRPC"=dword:00000001

    В ОС Windows Vista, Windows 7, 8, 10Technical Preview ключ реестра AllowRemoteRPC существует, но имеет значение равное 0 , что необходимо исправить. Для применения изменений требуется перезагрузка.

  • поскольку для обмена сообщениями утилита msg.exe использует протокол SMB (Server Message Block), на каждом компьютере, которому будут отправляться сообщения, должен быть открыт TCP порт 445

    Примеры использования MSG :

    msg * /server:Server "Тестовое сообщение " - отправить тестовое сообщение всем пользователям компьютера Server

    msg * /server:192.168.0.1 "Тестовое сообщение " - отправить тестовое сообщение всем пользователям компьютера с IP-адресом 192.168.0.1

    msg RDP-Tcp#0 /server:TSServer "Тестовое сообщение" - отправить тестовое сообщение пользователю терминальной сессии с именем RDP-Tcp#0 на компьютере TSServer

    msg console /server:Windows7 "Тестовое сообщение" - отправить тестовое сообщение текущему локальному пользователю компьютера Windows7

    msg console "Тестовое сообщение" - отправка тестового сообщения от пользователя сеанса RDP локальному пользователю. Если эта команда выполняется не пользователем терминальной сессии, то сообщение будет отправлено локальным пользователем самому себе.

    Для выполнения команды msg от имени другого пользователя можно воспользоваться утилитой PSExec из пакета PSTools или штатным средством runas.exe

    psexec -u otheruser -p otherpass msg * /server:win10 TEST message

    runas /user:otheruser "msg * /server:win10 Test message"

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