Качественные ИТ-услуги по приемлемым ценам Поиск по сайту

Взаимодействие с RDP-сеансом в Windows 2012 R2 и выше

 

      В серверной операционной системе Windows 2012 коренным образом изменена система взаимодействия с активными сеансами RDP. Очень, на мой взгляд, удобный способ подключения к активному сеансу через диспетчер задач, был заменен на очень неудобный, на мой взгляд, RDS Shadow – теневое подключение к RDP сессиям . Дабы облегчить себе жизнь и упростить общение с активными RDP-пользователями, была придумана несложная автоматизация процесса. 

  • Вариант с CMD-файлом.  Cоздаем простенький файл с расширением *.cmd 
    @echo off
    query user
    @Echo --------------------------------------------------------------
    set /p ID="Укажите ID сесии:"
    start mstsc /shadow:%ID% /control /noConsentPrompt
    Запускаем, указываем ID нужного сеанса, жмем Enter
     ПОЛЬЗОВАТЕЛЬ          СЕАНС              ID  СТАТУС  БЕЗДЕЙСТВ. ВРЕМЯ ВХОДА
     kadri                                                            2  Диск         7:13  05.10.2018 10:58
    >сергей  в.  попов     rdp-tcp#115              4  Активно          .  05.10.2018 17:52
    --------------------------------------------------------------
    Укажите ID сесии:
    И, если выбранная сессия активна, поучаем к ней доступ. 
  • Вариант с VBS-скриптом. Cоздаем файл с расширением *.vbs
    readFiles
    Sub ReadFiles
      Dim fso, f1, f2, ts, s, s1, s2, s3, s4, tStr, WshShell, tDir
      set WshShell = WScript.CreateObject("WScript.Shell")
      tDir = WshShell.CurrentDirectory
     
      Set fso = CreateObject("Scripting.FileSystemObject")
      ' сделаем и запустим cmd - поиск сессий
      Set f1 = fso.CreateTextFile(tDir&"\qu.cmd", True)
      f1.Write("query user>Session.txt")
      f1.close
      WshShell.Run "qu.cmd",2,True
     
      ' Прочитать содержимое файла
      Set ts = fso.OpenTextFile(tDir&"\Session.txt")
      f1 = 0
      tStr="Имя               ID    Простой   Время входа" & VBCrlf
      tStr=tStr & "---------------------------------------------------------------------------" & VBCrlf
      Do While Not Ts.AtEndOfLine
       s = ts.ReadLine
     If left(s,13) <> " ПОЛЬЗОВАТЕЛЬ" And  left(s,1) <> ">"  And Mid(s,47,7) = "ЂЄвЁў­®" Then
             f1 = f1+1
      'MsgBox "Строка = '" & s & "'" & " ID сеанса - " & Mid(s,40,5)
      s1=Trim(Mid(s,2,20))
      s2=Trim(Mid(s,40,5))
      s3=Trim(Mid(s,55,10))
      s4=Trim(Mid(s,66))
                    tStr=tStr & s1 & Space(15 - len(s1)) & "    " & s2 & Space(6 - len(s2)) & "  "& s3 & Space(6 - len(s3)) & "       " & s4 & vbcRLF
            End If
      Loop
      ts.Close
      fso.deleteFile tDir&"\Session.txt"
      fso.deleteFile tDir&"\qu.cmd"
      If f1=0 then
     MsgBox "Активных сеансов не найдено!"
      Else
     tStr = inputbox(tStr & VBCrlf & "Выберите ID ? ", "Запрос")
     if tStr<>"" Then
         ' сделаем и запустим cmd - поиск сессий
        Set f2 = fso.CreateTextFile(tDir&"\qu.cmd", True)
        f2.Write("start mstsc /shadow:" & tStr &  " /control /noConsentPrompt")
        f2.close
        WshShell.Run "qu.cmd",2,True
          fso.deleteFile tDir&"\qu.cmd"
      End If
      End if
    End Sub
    Сохраняем, запускаем:

    Далее аналогично...

Полагаю не стоит пояснять, что пользователь должен иметь соответствующие права на управление RDP сеансом.

 

 Для тех кому лень копировать код:

CMD-файл
VBS-файлд
Новинка: EXE-файл
Прочитано 1873 раз Последнее изменение Четверг, 14 Сентябрь 2023 19:23
Авторизуйтесь, чтобы получить возможность оставлять комментарии