vbs – проверьте, было ли подключение к удаленному рабочему столу

Вопрос или проблема

У нас есть скрипт, который запускает RDC для подключения к удаленной машине. Проблема в том, что иногда требуется несколько попыток для подключения. Первые несколько попыток часто выдаются

вставьте описание изображения здесь

пока не появится ожидаемая строка для ввода пароля

вставьте описание изображения здесь

Поэтому я хотел бы, чтобы скрипт проверял окно ответа, и если это ответ “не удается подключиться”, повторял попытку, пока не подключится. Но я не могу понять, как это сделать.

Косвенным способом может быть использование того факта, что окно “не удается подключиться” не появляется на панели задач, в то время как первоначальное окно “подключение”, а также окно ввода пароля, появляются. Так что, если у меня будет цикл, который проверяет каждые 2 секунды, появляется ли “Подключение к удаленному рабочему столу” на панели задач, это решит проблему. Но я не знаю, возможно ли это сделать.

Ответ или решение

Чтобы реализовать проверку, подключено ли удаленное рабочее стол, можно воспользоваться языком скриптов Visual Basic for Applications (VBS). Ваше решение будет включать в себя цикл, который будет проверять наличие окна "Удаленный рабочий стол" в панели задач. Это поможет вам управлять соединениями, особенно в ситуациях, когда необходимо многократно пытаться подключиться к удаленному компьютеру.

Вот пример VBS-скрипта, который выполняет указанную задачу:

Option Explicit

Dim objShell, objWMIService, colProcesses, objProcess
Dim isConnected

' Устанавливаем оболочку
Set objShell = CreateObject("WScript.Shell")

' Функция, проверяющая наличие окна "Удаленный рабочий стол" на панели задач
Function IsRDPWindowOpen()
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process Where Name = 'mstsc.exe'")

    If colProcesses.Count > 0 Then
        IsRDPWindowOpen = True
    Else
        IsRDPWindowOpen = False
    End If
End Function

' Цикл подключения к удаленному рабочему столу
Do
    ' Запуск команды подключения к удаленному рабочему столу
    objShell.Run "mstsc /v:IP_АДРЕС_УДАЛЕННОГО_КОМПЬЮТЕРА", 1, False

    ' Ждем некоторое время, чтобы время на запуск подключения
    WScript.Sleep 2000 

    ' Проверяем, появился ли "Удаленный рабочий стол"
    isConnected = IsRDPWindowOpen()

    If isConnected Then
        WScript.Echo "Подключение успешно!"
        Exit Do
    Else
        WScript.Echo "Не удалось подключиться. Повторная попытка..."
    End If

    ' Ждем перед следующим циклом
    WScript.Sleep 2000 
Loop While Not isConnected

' Освобождаем объекты
Set objShell = Nothing
Set objWMIService = Nothing
Set colProcesses = Nothing
Set objProcess = Nothing

Объяснение кода

  1. Создание оболочки: Скрипт инициирует объект WScript.Shell, который используется для выполнения команд.

  2. Функция IsRDPWindowOpen: Эта функция использует WMI для проверки, запущен ли процесс mstsc.exe (клиент удаленного рабочего стола). Если процесс запущен, значит, окно "Удаленный рабочий стол" открыто.

  3. Цикл подключения: Используется цикл Do...Loop, который будет выполнять попытки подключения к удаленному рабочему столу. Он вызывает mstsc с заданным IP-адресом удаленного компьютера.

  4. Проверка подключения: Через несколько секунд после каждой попытки подключения проверяется, открыто ли окно "Удаленный рабочий стол". Если оно открыто, цикл завершается, и выводится сообщение о успешном подключении. Если окно не открыто, сигнализируется о неудаче и выполняется повторная попытка.

Примечания

  • Не забудьте заменить IP_АДРЕС_УДАЛЕННОГО_КОМПЬЮТЕРА на фактический адрес удаленного компьютера.
  • Убедитесь, что у вас есть права на выполнение этого скрипта и доступ к удаленному рабочему столу.
  • Также учтите, что данный скрипт будет блокировать выполнение, пока не будет установлено соединение, это необходимо учитывать при интеграции с другими процессами.

Таким образом, данный скрипт будет полезен в решении вашей проблемы с повторными попытками подключения к удаленному рабочему столу.

Оцените материал
Добавить комментарий

Капча загружается...