В серверной операционной системе 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 СТАТУС БЕЗДЕЙСТВ. ВРЕМЯ ВХОДА
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, tDirset 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 Простой Время входа" & VBCrlftStr=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-файл |