Finalizar a sessão e o modo de espera da área de trabalho remota

2

Configurei o acesso remoto no meu computador (Windows 7 Pro x64 via RDP). A função wake-on-lan [WOL] já está funcionando, para que eu possa acordá-la do modo de espera. Quando termino uma sessão de área de trabalho remota ( start-menu - > logout ), o computador permanece na tela de login e não volta a dormir.

Eu gostaria de ter um arquivo em lotes (ou realmente algo) que eu possa executar do meu PC remoto para 1. end (desconectar ou logar) Sessão RDP e 2. colocam o PC para dormir (ele NÃO precisa logar o usuário) .

Eu tentei configurar uma tarefa do Windows que coloca o computador para dormir 30 segundos depois que um usuário efetua logout (não funcionou) . Eu tentei colocá-lo para dormir usando um arquivo de lote já, mas a sessão continuou em execução, e eu não pude fazer nada e tive que inicializar duro no meu PC.

    
por Niphram 02.01.2016 / 03:18

2 respostas

1

End RemoteDesktop Session and Standby

create a batch file (or really something) which i can activate from my remote-pc to end the session and put the pc to sleep (does not have to log out the user)

Dois exemplos de scripts abaixo:

  1. com LOGOFF ; e,
  2. outro com um RDP DISCONNECT (sem logoff)

Eu não tinha certeza se você queria um ou outro, então eu coloquei os dois abaixo, que deve funcionar bem a partir do Windows 7 do que eu testei.

Para o script de logoff, coloco alguma lógica if para não fazer logoff das sessões de escuta do console, do sistema ou do rdp-tpc, já que você só é interessante em sessões remotas conectadas ao RDP.

Para o script de desconexão, você simplesmente desconectará a sessão que a executa, conforme necessário, de modo que não há necessidade de lógica adicional neste (essa é a que você provavelmente precisará) .

A suposição é que você executará isso como um script em lote salvo manualmente e, se decidir usar o script de logoff em vez do script de desconexão, terá permissão para fazer logoff de todas as sessões aplicáveis.

SCRIPTS DE LOTE

(Este script também irá esperar 5 segundos após a desconexão da sessão atual e, em seguida, colocar o PC para dormir.)

Exemplo de script em lote ( DISCONNECT todas as sessões)

@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

(Este script também irá esperar 30 segundos após o logoff de todas as sessões e, em seguida, colocar o PC para dormir.)

AVISO: Este script não poderá ser executado ad hoc clicando duas vezes nesse arquivo em lote para as necessidades do OP especificamente, mas eu o mantive aqui como um item bônus no caso de alguém encontra uso com isso de outra forma. Como ele efetuará logoff das contas antes da execução da lógica do sono, essa lógica de suspensão não funcionará nesse caso específico. Isso precisaria ser executado a partir do Agendador de Tarefas, with Highest Privileges e Run whether the user is logged on or not - supus que você poderia configurar dessa forma e NÃO em um agendamento e apenas iniciar / executar conforme necessário do Agendador de Tarefas também. (captura de tela abaixo)

Exemplo de script em lote ( LOGOFF todas as sessões)

@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

Opções de tarefas agendadas da captura de tela

Maispesquisas,leituraefontes

por 02.01.2016 / 06:37
0

Por favor, tente isto: clique em um espaço em branco na área de trabalho enquanto estiver na sessão RDP e pressione Alt + F4. Você terá o antigo menu "power" e, a partir daí, você poderá forçar o computador a entrar no modo de suspensão e isso também desconectará seu RDP.

    
por 02.01.2016 / 03:47