Iniciar / WAIT RDP FIle no Windows 8

1

Não tenho certeza se devo postar este aqui ou no StackOverflow.

Eu quero um BAT que abra um arquivo de conexão RDP e, quando a conexão for fechada, faça logoff da máquina.

start /WAIT "ConnectionFile.rdp"
logoff

Mas o logoff acontece instantaneamente, ele não espera pela saída. Eu também tentei isso usando C # e Process.WaitforExit ().

O que você deve fazer? Eu acho que é um problema com mstsc.exe quando o parâmetro é um arquivo RDP.

Atualização : Eu estava testando e isso funciona bem no Windows 7, mas no Windows 8 e no Windows 7 Thin PC não funciona.

Atualizar Usando o powershell, avanço um pouco. Eu meu morcego se parece com isso, lançando o processo em Powershell que funciona.

powershell -version 2.0 -Sta -ExecutionPolicy UnRestricted Start-Process -Wait -FilePath mstsc -ArgumentList ConnectionFile.rdp; logoff

Mas se o RDP for um arquivo válido quando o Windows solicitar as credenciais, ele falhará e continuará com o próximo processo. Para fins de demonstração, mudei o logoff para um cálculo.

    
por Ricardo Polo 30.01.2013 / 18:01

2 respostas

1

Tente isto:

START /WAIT !_MSTSC! !_FILE! !_CONSOLE!

onde

  • ! _ MSTSC! é o caminho para o MSTSC.EXE
  • ! _ ARQUIVO! é um caminho para um arquivo RDP salvo, contendo hostname, login e pwd, talvez o nome de um arquivo para executar na conexão, blah blah blah
  • ! _ CONSOLE! está definido como "" (nulo) ou "/ ADMIN" conforme necessário

Isso depende do WAIT no MSTSC explicitamente, não apenas da "abertura bem-sucedida" do seu arquivo RDP. Como tal, deve (!) Funcionar um pouco melhor.

E ... aqui está uma advertência interessante do STARTtext:

    If Command Extensions are enabled, external command invocation
    through the command line or the START command changes as follows:

    When executing an application that is a 32-bit GUI application, CMD.EXE
does not wait for the application to terminate before returning to
the command prompt.  This new behavior does NOT occur if executing
within a command script.

Então ... o que pode ser necessário aqui é envolver o comando MSTSC e os parâmetros em um arquivo CONNECT-REMOTE.CMD e esperar que o THAT termine.

    
por 30.01.2013 / 18:26
0

Para qualquer um que encontre este artigo e lute com esse problema, insira a seguinte regra entre o comando mstsc.exe e o logoff:

powershell wait-process -name mstsc

Ao combinar com este artigo: link , o mstsc.cmd contém:

C:\Windows\System32\mstsc.exe RDPLocation
powershell wait-process -name mstsc
logoff
    
por 07.03.2018 / 09:16