Работа с сетью в командной строке Windows (CMD) часть 3 – uzverss — ЖЖ

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

Программа msg поставляется вместе с Windows еще со времен версий Windows 2000 и Windows XP, и предназначена для передачи сообщений от одного пользователя другому пользователю. Она предлагает простые возможности по выводу сообщения, и так же проста в использовании.

В качестве примера, выведем сообщение “Привет мир!”:

Использование mshta

Mshta – программа, предназначенная для запуска приложений формата hta, которые представляют из себя программы, написанные с использованием HTML, CSS, JavaScript и VBScript. В данном случае, нам пригодиться возможность выполнения команд, написанных на языке JavaScript и VBScript. Используя знания данных языков, можно выводить сообщения.

Сперва рассмотрим возможности использования скриптового языка VBScript совместно с mshta.

Выведем сообщение “Привет мир!”:

mshta vbscript:Execute("msgbox ""Привет мир!"":close")

Теперь рассмотрим возможности mshta с JavaScript.

Отобразим сообщение “Привет мир!”:

mshta javascript:alert("Привет мир!");close();

Выведем сообщение, состоящее из нескольких строк:

mshta javascript:alert("Привет мир!nИ снова привет мир!nnВсе еще привет мир!");close();

Использование powershell

Из командной строки так же можно вызвать оболочку PowerShell, передав ей все необходимые параметры, в результате чего будет отображено окно с нужным сообщением.

powershell [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Привет мир!""", """Пример""")

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

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

msg

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

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

Использование утилиты msg.exe на примере отправки сообщения терминальным пользователям в os windows server 2008

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

:/>  Пуск как в Windows 7 для Windows 10: как изменить на классическое меню, настройка

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

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

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

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

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

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

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

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

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

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

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

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

:/>  Получение сведений о системе » Информационный портал OS-7

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

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

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

Особенности

  • Можно осуществлять отправку документов. Для этого, в тексте параметра «сообщение» следует использовать символ (>) сразу после названия документа.
  • Когда имя юзера не указывается, предусматривается выдача ошибки.
  • Следует учитывать тот факт, что отправка сообщения требует наличия определенных разрешений. 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Расшифровка значений

имя_получателя

Требуется указать имя юзера, для которого адресуется сообщение.

название_сеанса


Устанавливает название сеанса.

код_сеанса

Требуется для обеспечения идентификации сеанса, в ходе которого юзером будет получено оповещение.

:/>  Get System information from command line using Systeminfo command

/server:название_сервера


Указывает сервер, в ходе которого планируется получение оповещения. Можно не применять указанный параметр при вводе команды. В таком случае, предусматривается задание действующего сервера.

/time:секунды

Указывает период времени, на протяжении которого на экране задержится информация об отправке. В том случае, когда параметр не указывается, нужно будет нажать ОК, чтобы сообщение исчезло.

Будет выдаваться информация о всех действиях, которые были осуществлены.


Применяется специальный режим, который предусматривает наличие ответа от получившего оповещение юзера. Следует применять /w вместе с /time:секунды, но это не считается обязательным требованием.

сообщение

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

Непосредственно в окне КС производится предоставление справочных сведений

Синтаксис

msg {имя_получателя|название_сеанса|код_сеанса|@название_документа|*} [/server:название_сервера] [/time:секунды] [/v] [/w] [сообщение]

Оставьте комментарий