Logoff RDP Session mit VBScript?
Hallo Zusammen,
ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
Ich möchte via Task Scheduler und VBscript ein zeitgesteuertes Logoff aller RDP Sessions vornehmen.
Über den Befehl
C:\>qwinsta /server:localhost
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console user1 0 Active wdcon
rdp-tcp 65536 Listen rdpwd
rdp-tcp#18 user2 1 Active rdpwd
werden mir die angemeldeten Benutzer aufgelistet.
mit dem Befehl rwinsta /server:localhost <ID> können diese dann beendet werden.
Jedoch würde ich dies gerne per VBScript durchführen ohne den rwinsta Befehl zu benutzen. Somit stellt sich mir die Frage über welche Klasse / welches Objekt ich das in VBScript (evetuell über WMI) realisieren kann?
Die WMI Klassen die ich bisher ausprobiert habe geben mir nur die Filesystem Sessions wieder (Computerverwaltung->Freigegebene Ordner->Sitzungen).
Grüße
Michael
ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.
Ich möchte via Task Scheduler und VBscript ein zeitgesteuertes Logoff aller RDP Sessions vornehmen.
Über den Befehl
C:\>qwinsta /server:localhost
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console user1 0 Active wdcon
rdp-tcp 65536 Listen rdpwd
rdp-tcp#18 user2 1 Active rdpwd
werden mir die angemeldeten Benutzer aufgelistet.
mit dem Befehl rwinsta /server:localhost <ID> können diese dann beendet werden.
Jedoch würde ich dies gerne per VBScript durchführen ohne den rwinsta Befehl zu benutzen. Somit stellt sich mir die Frage über welche Klasse / welches Objekt ich das in VBScript (evetuell über WMI) realisieren kann?
Die WMI Klassen die ich bisher ausprobiert habe geben mir nur die Filesystem Sessions wieder (Computerverwaltung->Freigegebene Ordner->Sitzungen).
Grüße
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103837
Url: https://administrator.de/contentid/103837
Ausgedruckt am: 23.11.2024 um 06:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Micha,
ich kann Dir meine Lösung geben, die ich iwann mal gestrickt habe. Ist eine Batchdatei und erfüllt deine Anforderungen auf jeden Fall.
Also hier ist der CODE: (Erläuterungen innerhalb der Batchdatei)
Bei Fragen bitte melden, ansonsten daran denken den Beitrag als gelöst zu markieren
Gruß
Markus
ich kann Dir meine Lösung geben, die ich iwann mal gestrickt habe. Ist eine Batchdatei und erfüllt deine Anforderungen auf jeden Fall.
Also hier ist der CODE: (Erläuterungen innerhalb der Batchdatei)
@echo off
setlocal
:: SERVERNAME ANGEBEN!!!
set RDPSERVER=CITRIX2
:: Zum Abmelden von allen Sitzungen (auch Citrix) nur nach "#" suchen lassen!)
set "SUCHESITZUNGSTYP=rdp-tcp#"
echo !!!ACHTUNG! VORSICHT!!!
echo Alle Sitzungen vom Typ "%SUCHESITZUNGSTYP%" werden jetzt vom Server "%RDPSERVER%" abgemeldet!!!
echo Zum Abbrechen STRG+C druecken!!
pause
For /F "usebackq tokens=1,2,3,4,5 delims= " %%i IN (`qwinsta /SERVER:%RDPSERVER% ^| find "%SUCHESITZUNGSTYP%"`) DO call :process %%k %%l %%m %%n %%o
pause
goto eof
:process
@rem Die Sitzungsnummer steht immer 2 Spalten vor dem Connectiontyp
if "%5" EQU "rdpwd" set sitzungsnummer=%3
if "%4" EQU "rdpwd" set sitzungsnummer=%2
if "%3" EQU "rdpwd" set sitzungsnummer=%1
@rem if "%sitzungsnummer%" NEQ "" echo %sitzungsnummer%
if "%sitzungsnummer%" NEQ "" rwinsta %SITZUNGSNUMMER% /SERVER:%RDPSERVER%
set SITZUNGSNUMMER=
Bei Fragen bitte melden, ansonsten daran denken den Beitrag als gelöst zu markieren
Gruß
Markus
Hallo,
einfach die Batch in das gleich Verzeichnis des VBScriptes legen.
Den Bereich bei WshSehll.Run (besonders die Optionen) schau Dir noch mal an. Momentan würde die Batch "unsichtbar" ausgeführt werden. (vbHide = 0, vbNormalFocus = 1)
Mit
führt er die z.B. shot.bat sichtbar aus.
Gruß und noch viel Erfolg
Markus
einfach die Batch in das gleich Verzeichnis des VBScriptes legen.
set fs = CreateObject("Scripting.FilesystemObject")
scriptname = Wscript.ScriptFullName
scriptpath = fs.getparentfoldername(scriptname)
set fs = Nothing
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run chr(34) & scriptpath & "\shot.bat" & chr(34), 0, True
Set WshShell = Nothing
Den Bereich bei WshSehll.Run (besonders die Optionen) schau Dir noch mal an. Momentan würde die Batch "unsichtbar" ausgeführt werden. (vbHide = 0, vbNormalFocus = 1)
Mit
WshShell.Run chr(34) & scriptpath & "\shot.bat" & chr(34), 1, True
Gruß und noch viel Erfolg
Markus