Как отправить сообщение всем пользователям терминального сервера windows server 2012

Обновлено: 07.07.2024

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

CHANGE USER /install

Для переключения сервера в режим исполнения:

CHANGE USER /execute
Change Logon

CHANGE LOGON /enable
Для запрещения новых регистраций:

CHANGE LOGON /disable
При перезагрузке сервера регистрация на нем разрешается автоматически, даже если перед выключением она была запрещена.

Query

Выводит список всех терминальных серверов в текущем или указанном домене:

QUERY TERMSERVER [servername] [/domain:domain] [/address] [/continue] где:
servername - имя запрашиваемого сервера
/domain:domain - имя домена (по умолчанию текущий домен)
/address - включить в вывод адреса IP каждого сервера
/continue - не делать пауз между экранами

Query Session Выводит список всех текущих сеансов на указанном терминалном сервере

QUERY SESSION [sessionname username sessionid] [/server:servername] [/mode] [/flow] [/connect] [/counter]
где:
sessionname - имя запрашиваемого сеанса
username - имя пользователя
sessionid - идентификатор сеанса
/server:servername - имя сервера. По умолчанию - сервер, на котором вы зарегистрировались.
/mode - вывод текущих настроек
/flow - вывод текщих настроек управления потоком
/connect - вывод текущих настроек соединения
/counter - вывод информации о счетчиках для сервера

Query User Выводит список всех текущих пользователей на терминальном сервере

QUERY USER [username sessionname sessionid] [/server:servername] где:
sessionname - имя запрашиваемого сеанса
username - имя пользователя
sessionid - идентификатор сеанса
/server:servername - имя сервера. По умолчанию - сервер, на котором вы зарегистрировались.
Вы можете сократить команду QUERY USER до QUSER

Query Process

Выводит список процессов, выполняющихся на терминальном сервере (можно отфильтровать для сеанса).

QUERY PROCESS [* processid username sessionname /id:nn programname] [/server:servername] [/system]
где:
* - все процессы
processed - информаци только о процессе с указаным ID
username - все процессы, выполняемые в контексте указанного пользователя
sessionname - процессы, выполняемые в контексте указанного сеанса
/ID:nn - процессы, выполняемые в сеансе с указанным номером ID
programname - процессы, порожденные указанной исполяемой программой
/server:servername - имя запрашиваемого сервера
/system - список системных процессов

Logoff
Выход пользователя и удаление его сеанса. Без аргументов команда закроет сеанс текущего пользователя.

LOGOFF [sessionid sessionname] [/server:servername] [/v]
где:
sessionid - идентификатор закрываемого сеанса
sessionname - имя закрываемого сеанса
/server:servername - севрер, на котором надо завершить сеанс. По умолчанию сервер, к которому вы подключены.
/v - вывод подробной информации о выполняемых действиях

Reset Session
Завершение сеанса без предупреждения пользователя и без аккуратного выхода. Может использоваться для завершения зависших сеансов.

RESET SESSION [sessionname sessionid] [/server:servername] [/v]
где:
sessionname - имя сеанса
sessionid - ID сеанса
/server:servername - имя сервера, на котором выполняется сеанс
/v - выводить информацию об осуществляемых действиях

Shadow

Созает теневой сеанс для удаленного упарвления:

SHADOW [sessionname sessionid] [/server:servername] [/v]
где:
sessionname - имя сеанса
sessionid - ID сеанса
/server:servername - имя сервера

Terminal Services Profile

Заполняет профиль Terminal Services указанного пользователя. Может использоваться для копирования содержимого профиля Terminal Services от одного пользователя к другому. Эта команда требует привилегий администратра.

TSPROF /update [/domian:domainname /local] /profile:path username
TSPROF /copy [/domian:domainname /local] [/profile:path] src_user dest_user
TSPROF /q [/domian:domainname /local] username
где:
/update - заполняет профиль пользователя domainname\username с маршрутом path
/copy копирует профиль Terminal Services из src_user в dest_user и, если указано, обновляет путь к профилю для пользователя dest_user маршрутом path
/q вывод маршрута Terminal Services Profile для указанного пользователя

Terminal Server Shutdown

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

TSSHUTDN [wait_time] [/server:servername] [/reboot] [/powerdown] [/delay:logoffdelay] [/v]
где:
wait_time - число секунд ожидания после предупреждения пользователя до принудительного закрытия из сеансов (по умолчанию 30 секунд).
/server:servername - имя выключаемого/перезагружаемого сервера
/reboot - перезагрузить сервер
/powerdown - выключить сервер после остановки Windows; эту функцию должен поддерживать BIOS
/delay:logoffdelay - число секунд ожидания после выхода всех пользователей до отключения (по умолчанию 30 секунд)
/v - вывод подробной информации об осуществляемых дейтсвиях

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




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

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

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

У вас появится справка по утилите. Конструкция команды будет такой MSG [/SERVER: ] [/TIME: ] [/V] [/W] [ ]



Вот так, например в Windows Server 2019 выглядит подобное оповещение на RDS ферме.


Для отправки оповещения на удаленный сервер вы должны использовать вот такую конструкцию:

Для отправки на несколько серверов, можно использовать вот такое построение команды:

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


Безусловно самым популярным и универсальным методом отправки оповещений пользователям удаленного рабочего стола, являются командлеты PowerShell. Одним из таких командлетов выступает Send-RDUser Message.


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

Синтаксис msg.exe

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

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

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

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

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

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

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

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


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


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


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

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


В связи с проведением работ по расчету зарплаты –

просьба в программе SAP Персонал с 11:00 до конца дня

с табельными номерами не работать!”

Запуск PowerShell скрипта из проводника с правами администратора

Рассмотрим, как добавить в контекстное меню проводника File Explorer для файлов с расширением *.ps1, пункт, позволявший запустить скрипт PowerShell с правами администратора.

Запустите редактор реестра (regedit.exe)

Перейдите в ветку HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\shell


Создайте подраздел с именем runas и перейдите в него

Внутри раздела runas создайте пустой строковый параметр (String Value) с именем HasLUAShield (этот параметр добавит иконку UAC в контекстное меню проводника)

В разделе runas создайте вложенный подраздел command


В качестве значения параметра Default раздела command укажите значение:


Теперь, если щелкнуть ПКМ по любому *.PS1 файлу, в контекстном меню можно выбрать пункт Run as administrator


Совет. Если скрипт отрабатывает быстро, пользователь успевает только увидеть появившееся и быстро исчезнувшее окно PowerShell. А что делать, если результат выполнения скрипта должен остаться на экране для просмотра пользователем?

Чтобы после окончания работы скрипта, окно консоли PowerShell не закрывалось, необходимо добавить в строку параметр –NoExit:

Windows Server 2012 находится в рабочей группе. На нем развернут терминальный сервер.


1 ответ 1

MSG не требует многого. Обычно ей для работы нужны три вещи:
1. Открытый TCP порт 445 (правда, бывают проблемы )
2. Разрешенный AllowRemoteRPC

Для этого проверяем, установлено ли значение параметра AllowRemoteRPC в ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server в 1. Если нет, изменяем и перегружаемся.

Открываем Конфигуратор сервера узла сеансов рабочих столов (проще всего tsconfig.msc из консоли) и добавляем права пользователей именно так, как я показал на скриншоте:


Update 1

В случае, если у вас версия Server 2012 R2 (в нём нет описываемой оснастки сразу) или поздний релиз Server 2012, в котором они тоже отключены (речь идёт о стандартных оснастках tsadmin.msc (Remote Desktop Services Manager, по-русски Диспетчер служб удаленных рабочих столов) и tsconfig.msc (Remote Desktop Session Host Configuration, по-русски Конфигурация узла сеансов удаленных рабочих столов), то можно использовать Server Manager или консоль редактора групповых политик (gpedit.msc), но там всё несколько, на мой взгляд, замороченнее.

Обычно поступают по-иному: возвращают эти две оснастки, используя библиотеки от Server 2012, где они есть, ли даже от Server 2008.

Всё, что нужно сделать, это скопировать в папку C:\Windows\System32 вашего сервера соответствующие файлы оснастки:

И сделать экспорт соответствующих веток реестра

с последующим импортом.

Мы уже проделывали подобную операцию, она недеструктивна, но не у всех есть под рукой установленные серверы с рабочими оснастками. Поэтому вот комплекты (файлы + реестр) для английского и русского серверов 2012/2012 R2.

Update 2

Мониторинг и оповещение о событиях в журналах Windows: отправка на E-mail в Windows Server 2012 R2

Не так давно, для успешного прохождения аудита на соответствие стандартам PCI DSS, потребовалось включить аудит событий Windows серверов и что самое главное — настроить отправку уведомлений о критичных событиях на E-mail. Для Linux серверов вопрос решается установкой и настройкой OSSEC (ну еще могут понадобиться syslog ws loganalyzer и auditd), для Windows Server 2012 R2 да еще и русской версии он не подошел (в последствии нам таки удалось его адекватно настроить, если будет интересно — смогу описать как). Так что решили искать другие способы…

Первым дело следует включить аудит всех необходимых операций (управление учетными записями и контроль целостности файлов) в доменной политике. И если с аудитом операций над объектами Active Directory все просто, то вот с аудитом файловых операций придется повозиться. Тут, как нельзя кстати, компания Netwrix (не сочтите за рекламу, — компания автор коммерческого софта для аудита) подготовила замечательную статью: «Настройка аудита файловых серверов: подробная инструкция и шпаргалка» (.pdf).


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

Windows Server 2012 находится в рабочей группе. На нем развернут терминальный сервер.

Спасибо за помощь.


7,648 4 4 золотых знака 19 19 серебряных знаков 57 57 бронзовых знаков

MSG не требует многого. Обычно ей для работы нужны три вещи:
1. Открытый TCP порт 445 (правда, бывают проблемы )
2. Разрешенный AllowRemoteRPC

Для этого проверяем, установлено ли значение параметра AllowRemoteRPC в ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server в 1. Если нет, изменяем и перегружаемся.

Открываем Конфигуратор сервера узла сеансов рабочих столов (проще всего tsconfig.msc из консоли) и добавляем права пользователей именно так, как я показал на скриншоте:

введите сюда описание изображения

Update 1

В случае, если у вас версия Server 2012 R2 (в нём нет описываемой оснастки сразу) или поздний релиз Server 2012, в котором они тоже отключены (речь идёт о стандартных оснастках tsadmin.msc (Remote Desktop Services Manager, по-русски Диспетчер служб удаленных рабочих столов) и tsconfig.msc (Remote Desktop Session Host Configuration, по-русски Конфигурация узла сеансов удаленных рабочих столов), то можно использовать Server Manager или консоль редактора групповых политик (gpedit.msc), но там всё несколько, на мой взгляд, замороченнее.

Обычно поступают по-иному: возвращают эти две оснастки, используя библиотеки от Server 2012, где они есть, ли даже от Server 2008.

Всё, что нужно сделать, это скопировать в папку C:\Windows\System32 вашего сервера соответствующие файлы оснастки:

И сделать экспорт соответствующих веток реестра

с последующим импортом.

Мы уже проделывали подобную операцию, она недеструктивна, но не у всех есть под рукой установленные серверы с рабочими оснастками. Поэтому вот комплекты (файлы + реестр) для английского и русского серверов 2012/2012 R2.

Update 2

1) net send - только для виндовс ХР или менее
2) msg.exe - только для удалённого рабочего стола

подскажите, какой же вариант для AD?

Нет стандартного способа. Вот я писал такой скрипт:

$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=LV,OU=Computers,OU=Company,DC=domain,DC=local")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain,"(objectCategory=computer)",@('name'))
$objSearcher.FindAll() | % | %

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.

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

Для получения статуса сессии console требовались права адм, это раз.
Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема.

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.

Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема. »

Спасибо, ясно. Ваша идея с msg.exe мне нравится.

Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема. »
А не пробовали тупо использовать параллельные сессии, наподобие:

Тут можно, конечно, и не все 500 зараз, а попробовать использовать -PassThru и очередь на какое-то определённое количество одновременных процессов, разумеется, с предварительной проверкой доступности хотя бы пингом, дабы msg.exe не топтался в бесполезных попытках достучаться до выключенной машины.

Для получения статуса сессии console требовались права адм, это раз. »

Не могли бы Вы пояснить, в каком месте приведённого Вами кода это нужно? Или вообще не в том дело? Не соображу.

И, если ещё не устали от вопросов — пояснить более подробно по этим пунктам:

Вот на этом я и остановился, так как выдавать такие права всем подряд не собирался.
Проверять параллельность запуска cmd при этом уже было неинтересно .)

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.

Читайте также: