Reconectar uma conexão de área de trabalho remota após reinicializar o host

2

Muitas vezes me encontro conectando a uma estação de trabalho ou servidor com a Área de Trabalho Remota para executar uma tarefa que requer uma reinicialização. Nesses casos, geralmente preciso reconectar depois que o host volta a funcionar on-line para garantir que tudo ocorreu conforme o planejado ou para continuar meu trabalho. Nesses casos, normalmente inicio "ping -t" em um prompt de comando para avisar quando eu puder reconectar.

No entanto, ocasionalmente me distraio com outra coisa enquanto espero que o host volte a ficar on-line e esqueça de voltar a ele. Seria muito bom ser alertado quando o host estiver on-line novamente e permitir que eu me reconecte (de preferência com um único clique).

Alguém sabe de uma maneira fácil de conseguir isso? Estou pensando que deve haver um utilitário gratuito disponível, ou talvez isso possa ser feito com um script do PowerShell.

    
por Tweek 03.06.2011 / 23:43

7 respostas

1

Roteiro Powershell rápido e sujo que uso diariamente:

<#
.Synopsis
Checks for and connects to RDP on a given server.
.Description
This script tests for an open port 3389 (standard Windows RDP), and if it finds it, passes the IP to mstsc.exe. Otherwise it retries indefinitely. Ctrl+C will halt the script.
.Parameter ip
IP or FQDN of a Windows machine to test. Only takes one argument.
.Parameter wait
Will assume that the machine is still up, wait until it stops responding (even once), and then try to connect. Good for machines that are about to reboot.
.Parameter Verbose
Will print a line each time it tries unsuccessfully.
.Example
rdpupyet.ps1 ITG-SRV-INF01 -Verbose
#>
[CmdletBinding()]
param($ip, [switch]$wait)

function Get-DownYet ($ip) {
    Write-Verbose "Waiting for $IP to shut down."
    do {
        try {$up = New-Object System.Net.Sockets.TCPClient -ArgumentList $ip,3389}
        catch {$up = $false}
    }
    until ($up -eq $false)
    Write-Verbose "$IP no longer responding."
}

Write-Verbose "Testing RDP Connection... Ctrl+C to quit."

if ($wait) {Get-DownYet $ip}
do {
    try {$success = New-Object System.Net.Sockets.TCPClient -ArgumentList $ip,3389}
    catch {Write-Verbose "RDP not active. Retrying."}
}
while (!$success)

mstsc.exe /v:$ip /admin

Não tem tempo, receio. Mas isso poderia ser facilmente adicionado, junto com um bipe rápido sobre uma resposta bem-sucedida.
O bit com o qual estou mais feliz (tirado de uma fonte atualmente não lembrada na internet) é que isso não tentará se conectar quando o servidor responder ao ping - em vez disso, somente quando a porta RDP padrão estiver acessível.

    
por 09.06.2015 / 12:53
3

Escreva "não se esqueça do $ ServerName" em uma nota e coloque-o no monitor.

    
por 03.06.2011 / 23:48
1

Veja esta função que inicia uma sessão RDP e em este script para o PowerShell.

Veja este código de script:

#This piece waits for the Server to come back online . do{$result = $ping.send("ServerName");write-host "." -NoNewLine -ForegroundColor "Red"} until ($result.status -eq "Success")

você poderia adicionar facilmente a chamada RDP de início após o loop que espera que o host retorne on-line. Pode não ser tão difícil conseguir o que você quer com este script.

    
por 03.06.2011 / 23:55
0

OK, eu não sei de nada que chame seu celular, mas se você abrir uma caixa de comando, e fizer "ping -t" menos as aspas, ele continuará pingando ... não apenas as 4 vezes . É difícil ignorar isso no meio da tela quando você voltar.

Em alternativa, sugiro strongmente que você use colina diariamente, pois sua mente está fritando em uma idade relativamente jovem.

    
por 04.06.2011 / 00:00
0

Eu tenho um script simples em cada um dos meus servidores que me envia um email quando o servidor é reinicializado. É um arquivo em lote usando blat no Windows, scripts perl no Mac e Linux. Eles são acionados por qualquer meio que seja apropriado para o sistema operacional. por exemplo. um script de inicialização do computador na janela.

    
por 04.06.2011 / 01:33
0

você pode criar um script que faça um loop

QWINSTA /SERVER:myserver "RDP-TCP"

esta é uma maneira rápida de ver quais usuários estão conectados a um servidor, essa sintaxe específica parece especificamente para a sessão de escuta do RDP nesse servidor, uma vez que visível deve ser possível fazer logon, eu uso o comando ligeiramente diferente em um script que rastreia realmente cerca de 60 servidores e identifica em que local da rede um usuário está logado.

    
por 29.04.2012 / 20:23
-2

Existem alguns scripts disponíveis para isso agora, veja:

  • link (LINK DEAD. Arquivado aqui .)
  • e meu script (não tendo visto nenhum dos outros): link
por 05.03.2013 / 04:11