Команда net send приклади написання. Надсилання повідомлення через командний рядок на інший комп'ютер. Зауваження щодо використання команди net send

29.11.2020 Програми

зіткнувся з проблемою інформування користувачів, найчастіша причина – оновлення 1С, при якому треба, щоб усі мої користувачі (а їх понад 160) вийшли з 1С і якийсь час не заходили. Здавалося б, чого складного, можна відправити повідомлення по електронній пошті, Як я раніше і робив, коли у мене був офіс 365, але на яндекс пошті є свої обмеження: не більше 50 користувачів у списку розсилці. Якщо відправити більшій кількостікористувачів, то лист до деяких просто не дійде. Надсилати окремо по 50 користувачів - не зручно. Друга проблема з яндекс поштою — необхідність введення капчі в деяких випадках система сприймає масове розсилання як спам, а листи потрібні, якщо не попередити користувача він не зберегтися вчасно і можуть бути проблеми.

Загалом стало незручно відправляти повідомлення всім користувачам. Почав думати над варіантами рішення.

Перше, що спало на думку: , але виявилося кілька незручностей:

  • Повідомлення надходять приблизно протягом 30 хвилин на 160 робочих місць, це дуже довго.
  • Повідомлення виходить лише на панель завдань, якщо користувач працює через віддалений робочий стіл, повідомлення він побачить не відразу.
  • Треба підтримувати працездатність агентів касперського на робочих машинах користувача, інакше повідомлення взагалі не дійде.

Другий варіант: встановити якийсь месенджер, але тут теж виникає кілька незручностей.

  • Є дуже багато месенджерів, вони не є універсальними, не можна надсилати повідомлення один одному між месенджерами.
  • Хороші месенджери платні.
  • Повідомлення не вискакують поверх всіх вікон, а якщо треба повідомити щось термінове та важливе, то це корисна властивість повідомлення.
  • Потрібна установка та налаштування цих самих месенджерів, а також навчання користувачів новому програмному забезпеченню.

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

Виглядає команда для надсилання повідомлень на один комп'ютер у локальній мережі так:

msg * /server:ім'я_комп'ютера «Тестове повідомлення, натисніть ОК»

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

На жаль, поза доменом така команда не працює, а оскільки я завдання виконав, далі експериментувати було просто не раціонально. Надіслати повідомлення на комп'ютери в робочій групіу мене не вийшло, але я маю таких комп'ютерів одиниці. Їм можна надіслати повідомлення і поштою, або в тому ж касперському, або через якийсь месенджер. Нехай це буде тема для одного з таких записів.

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

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

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

  • Швидко реалізувати практично не вимагає підготовки для чергового відправлення.
  • Надійно працює, користувач точно побачить це повідомлення.
  • Безкоштовно.
  • Дуже і дуже просто, потрібно лише знати одну команду та імена комп'ютерів.

Буду радий будь-яким зауваженням, пропозиціям, коментарям)

Команда 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 як 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.
  • Примітка

    Якщо брандмауер не вимкнено, то програма 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) відображаються у вікні із запрошенням до реєстрації в системі та можуть бути доступні стороннім.