2

Я настроил удаленный доступ на моем компьютере (Windows 7 Pro x64 через RDP). Функция [WOL] wake-on-lan уже работает, поэтому я могу разбудить ее после сна. Когда я заканчиваю сеанс удаленного рабочего стола (start-menu -> « logout), компьютер просто остается на экране входа в систему и не переходит в спящий режим.

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

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

2 ответа2

1

Завершение сеанса RemoteDesktop и ожидания

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


Два примера скриптов ниже:

  1. с LOGOFF ; а также,
  2. другой с 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

Параметры запланированной задачи снимка экрана


Дальнейшие исследования, чтение и источники

0

Пожалуйста, попробуйте это: щелкните пустое место на рабочем столе во время сеанса RDP и нажмите Alt+F4. Вы получите старое меню "питания" и оттуда вы можете заставить свой компьютер перейти в спящий режим, что, конечно, также отключит ваш RDP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .