Можно ли настроить подключение к удаленному рабочему столу так, чтобы оно оставалось открытым до повторного подключения после перезагрузки удаленного компьютера?

285
NReilingh

Я управляю экземплярами Windows Server 2016 с рабочего стола Windows 10 Pro с помощью подключения к удаленному рабочему столу. Когда я перезагружаю сервер, подключение к удаленному рабочему столу закрывается, и мне нужно пропинговать компьютер, пока я не узнаю, что он снова работает и готов к повторному подключению.

Могу ли я сделать так, чтобы Remote Desktop Connection сделал это для меня? Все, что я ожидаю, это то, что окно будет оставаться открытым и периодически пытаться восстановить соединение каждые несколько секунд, пока соединение не будет восстановлено.

3

1 ответ на вопрос

1
bcs78

Насколько я знаю, это невозможно. В RDP есть параметр автоматического переподключения, но он работает только в том случае, если соединение было разорвано из-за проблем с сетью и т. Д., Но сам отключенный сеанс RDP все еще доступен на сервере. Когда вы перезапускаете сервер через RDP, сеанс полностью закрывается, и поэтому клиент «знает», что для него не существует никакого сеанса на сервере.

Возможный обходной путь - написать простой сценарий для этого сценария. Как в Powershell:

While($i -ne 1) { Start-Process -FilePath "test.rdp" -Wait; } 

Это перезапускает RDP-соединение (точнее, оно запускает совершенно новое) после его закрытия до тех пор, пока вы не остановите скрипт (нажав Ctrl + C или нажав кнопку Стоп в Powershell ISE).

Вы можете объединить его с сетевым пингом до фактического запуска соединения RDP и некоторыми выходными данными, чтобы узнать, что происходит в данный момент.

Try { Write-Host "Press CTRL+C to stop the script."; While($i -ne 1) { Write-Host "Pinging server..."; If (Test-Connection -ComputerName rdp-server.local -Count 1 -ErrorAction SilentlyContinue) { Write-Host "Ping OK. Starting RDP connection..."; Start-Process -FilePath "test.rdp" -Wait; Write-Host "RDP connection closed. Restarting..."; } Else { Write-Host "Ping failed. Retry..."; } } } Finally { Write-Host "CTRL+C pressed. Bye!"; } 

Похожие вопросы