Завершение сеанса RemoteDesktop и ожидания
создайте пакетный файл (или что-то еще), который я могу активировать с моего удаленного компьютера, чтобы завершить сеанс и перевести компьютер в спящий режим (не нужно выходить из системы)
Два примера скриптов ниже:
- с
LOGOFF
; а также,
- другой с RDP
DISCONNECT
(без выхода)
Я не был уверен, хотите ли вы, один или другой, поэтому я поставил оба ниже, которые должны хорошо работать с Windows 7 из того, что я тестировал.
Для сценария выхода из системы я поставил некоторую логику if, чтобы не выходить из сеанса прослушивания консоли, системы или rdp-tpc, поскольку вас интересуют только удаленные сеансы, связанные с RDP.
Для сценария отсоединения вы просто отключите сеанс, который запускает его по мере необходимости, поэтому нет необходимости в дополнительной логике для этого (это тот, который вам, вероятно, нужен).
Предполагается, что вы запустите его как сохраненный пакетный сценарий вручную, и если вы решите использовать сценарий выхода из системы, а не сценарий отключения, у вас будет разрешение выйти из всех или любых применимых сеансов.
Пакетные сценарии
(Этот сценарий также будет ожидать 5 секунд после отключения текущего сеанса и затем перевести компьютер в спящий режим.)
Пример пакетного сценария (DISCONNECT
все сеансы)
@ECHO OFF
::: Disconnected current RDP session
TSDISCON
::: Pause 5seconds before going to sleep ensuring enough time
PING -n 5 127.0.0.1 > NUL
::: Put computer to sleep
%systemroot%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0
GOTO EOF
(Этот сценарий также будет ждать 30 секунд после выхода из системы всех сеансов, а затем перевести компьютер в спящий режим.)
ПРЕДУПРЕЖДЕНИЕ. Этот сценарий не сможет быть запущен ad hoc, если дважды щелкнуть этот пакетный файл специально для нужд ОП, но я оставил его здесь в качестве дополнительного элемента на тот случай, если кто-либо найдет для него применение в противном случае.Поскольку он выйдет из учетных записей до запуска логики сна, эта логика сна не будет работать в этом конкретном случае. Это нужно будет запустить из планировщика заданий with Highest Privileges
и Run whether the user is logged on or not
предполагал, что вы можете настроить этот способ, а НЕ по расписанию, и просто запускать / запускать при необходимости также из планировщика заданий. (снимок экрана ниже)
Пример пакетного сценария (LOGOFF
все сеансы)
@ECHO OFF
FOR /F %%S IN (
'"QUERY SESSION /SM"'
) DO (
IF NOT %%~S==0 IF NOT %%~S==1 IF NOT %%~S==65536 RWINSTA %%~S
)
::: Pause 5 seconds before going to sleep ensuring enough time
PING -n 5 127.0.0.1 > NUL
::: Put computer to sleep
%systemroot%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0
GOTO EOF
Параметры запланированной задачи снимка экрана
Дальнейшие исследования, чтение и источники