Написание сценариев на основе служб терминалов (часть 4)

Опубликовано: 23 Апреля, 2023







  • Написание сценариев на основе служб терминалов (часть 7)
  • Написание сценариев на основе служб терминалов (часть 8)
  • Написание сценариев на основе служб терминалов (часть 9)
  • Написание сценариев на основе служб терминалов (часть 10)

  • Написание сценариев на основе служб терминалов (часть 11)




  • Написание сценариев на основе служб терминалов (часть 13)


  • Написание сценариев на основе служб терминалов (часть 14)

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


Команда MSG


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


Команду MSG можно использовать для отправки всплывающего сообщения пользователю или группе пользователей. Синтаксис следующий:


МСГ {имя пользователя | имя сеанса | идентификатор сеанса | @имя_файла | *} [/server: имя сервера] [/time: секунды] [/V] [/W] [сообщение]


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


Последним вариантом указания получателя сообщения является звездочка. Если указать звездочку, то сообщение будет отправлено всем, кто подключен к серверу. Использование звездочки — отличный вариант, если вам нужно сообщить всем, что сервер будет отключен.


Параметр /Server:server name позволяет указать имя сервера, на котором должно выполняться действие. Это необязательный параметр, и если его не указать, то по умолчанию будет использоваться текущий сервер.


Параметр /V позволяет запросить у команды MSG подробную информацию о выполняемом действии.


Переключатель /W указывает команде MSG ожидать ответа от пользователя.


Вы можете комбинировать переключатель /W с переключателем /Time: секунды. Это позволяет указать команде MSG, как долго ждать ответа от пользователя.


Последний параметр, используемый с этой командой, — это само сообщение. Если вы не введете сообщение, то команда предложит вам ввести сообщение при запуске команды.


Теперь, когда я объяснил, что делают различные переключатели командной строки, я хочу показать вам, как использовать эту команду. Давайте начнем с чего-то простого. Команда ниже отправляет сообщение «Это тест» администратору:


Администратор MSG Это тест


Если вы посмотрите на рисунок A, вы увидите, как на самом деле выглядит эта команда. На рис. B показаны сгенерированные выходные данные.


Изображение 28526
Рисунок A. Эта команда представляет собой один из самых простых способов отправки сообщения.


Изображение 28527
Рисунок B. Так выглядит сообщение после получения


Есть несколько разных моментов, на которые я хочу, чтобы вы обратили внимание в связи с сообщением, которое я только что отправил. Во-первых, обратите внимание, что мне не нужно было использовать какие-либо переключатели командной строки, чтобы указать получателя сообщения. Все, что мне нужно было сделать, это ввести имя пользователя получателя. Я мог бы так же легко использовать имя сеанса или идентификатор сеанса, и синтаксис был бы точно таким же.


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


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


Обычно, когда вы запускаете команду MSG, команда предполагает, что вы пытаетесь отправить сообщение одному или нескольким пользователям, которые вошли в систему на сервере, на котором вы вводите команду. Это не всегда практично, потому что вы не всегда будете работать непосредственно на консоли сервера. Часто вы, вероятно, будете выполнять обслуживание сервера со своей рабочей станции, а не ездить в серверную.


К счастью, команда позволяет вам использовать переключатель /SERVER, чтобы указать имя сервера, на котором должна выполняться команда. Например, предположим, что я хотел запустить точно такую же команду, которую уже показывал вам, но на этот раз я хотел ввести команду на свою рабочую станцию Vista, но чтобы команда применялась к серверу с именем Mirage. Для этого я бы ввел следующую команду:


Администратор MSG /server:mirage Это тест


После ввода этой команды Windows отправит тестовое сообщение любому, кто вошел в систему как администратор через сеанс на сервере Mirage.


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


Создать список просто. Просто откройте Блокнот и создайте документ, в котором каждое имя пользователя находится на отдельной строке. После этого вы можете сослаться на этот файл из команды MSG. Например, если вы хотите создать файл с именем users.txt, команда MSG будет выглядеть так:


MSG @users.txt Это тест


Имейте в виду, что, хотя обычно проще всего ввести имена пользователей в текстовый файл, вы также можете включить имена сеансов и идентификаторы сеансов. Точно так же вы также можете использовать переключатель /server в сочетании с вашим текстовым файлом, чтобы команда выполнялась для определенного сервера.


Вывод


В этой статье я начал объяснять, как можно использовать команду MSG для отправки всплывающих сообщений пользователям, подключенным к определенному терминальному серверу. В следующей части этой серии статей я продолжу обсуждение, показав вам больше вещей, которые вы можете сделать с помощью команды MSG. Затем я покажу вам еще несколько команд, связанных со службой терминала.