RemoteApps sind eine feine Sache bei der Arbeit mit Terminalservern, schließlich muss es nicht immer ein vollständer Desktop sein. Kommen allerdings mobile Computer (aka Notebooks) ins Spiel, ist es nicht immer wünschenswert jede RemoteApp z.B. wegen eines externen Termins zu schließen, um sie im Anschluss wenn man wieder da ist, erneut zu starten.
Mit dem Bordmittel-Befehl “tsdiscon” lassen sich Sitzungen leicht trennen. Damit das Ganze für bestimmte Server als auch Benutzer möglichst einfach und mit Sicherheitsabfrage klappt, wurde folgendes Skript erstellt:
@echo off title RemoteApps trennen cls rem Konfiguration rem Benutzername und Terminalserver mittels Blindparameter uebergeben. set SessionUsername=%1 set WTSServer=%2 rem Wird kein Parameter uebergeben, den aktuell angemeldeten Benutzer und den lokalen Computer verwenden. if %SessionUsername%.==. set SessionUsername=%username% if %WTSServer%.==. set WTSServer=Localhost rem Aktuelle Sitzungen auflisten query session /server:"%WTSServer%" | find "%SessionUsername%" > "%TEMP%\Session.txt" set /p Session=<"%TEMP%\Session.txt" rem ID des Benutzers ermitteln rem Ab Zeichen 43 in der Zeile, rem drei Stellen in die Variable schreiben. set SessionID=%Session:~43,3% rem Ggf. vorhandene Leerstelle(n) entfernen, falls die ID nur ein- oder zweistellig ist. set "SessionID=%SessionID: =%" rem "Session.txt" entfernen del "%TEMP%\Session.txt" /q rem RemoteApps trennen :Abfrage echo. set /p Answer=RemoteApps von "%WTSServer% - %SessionUsername%" trennen (Ja/Nein)? if /i %answer%==j tsdiscon %SessionID% /Server:%WTSServer% & goto EOF if /i %answer%==n goto EOF echo. echo Ungueltige Eingabe goto Abfrage :EOF
Das Skript kann lokal auf dem Client oder auf dem Server gestartet werden. Werden keine Parameter angeben, wird der aktuelle Benutzername und “Localhost” als Server verwendet.
Alternativ kann sowohl Benutzername als auch Servername oder -IP übergeben werden:
DisconnectRemoteApp.cmd <Benutzername> <Terminalserver>
Zum Beispiel:
DisconnectRemoteApp.cmd aweber 192.168.0.13
Bevor die Verbindung getrennt wird, erscheint eine Sicherheitsabfrage:
Einziger Schönheitsfehler auf Client-Seite nachdem die Verbindung getrennt wurde ist folgende Meldung:
Getestet mit Windows 8.1 Pro und Windows Server 2012 R2.
Update 28.08.2017
Für die “Getrennte RemoteApp”-Meldung habe ich ein kleines Tool in AutoIt erstellt, das automatisch auf “OK” klickt. Ferner wurde ein weiteres Skript erstellt, mit dessen Hilfe RemoteApps bzw. der ausführende Benutzer vom Terminalserver abgemeldet wird.
Alles zusammen (Skripte, Quellcode, Exe-Dateien für 32- und 64-bit Windows) befindet in folgendem Archiv:
RemoteApp_trennen_abmelden.zip
Update 09.11.2018
Was selbstverständlich auch möglich ist, das man “tsdiscon” und “logoff” als RemoteApps freigibt und diese dann startet um sich abzumelden. Die Meldung über getrennte RemoteApp erscheint dennoch, so das man um das AutoIt-Tool (siehe voriges Update) nicht drumherum kommt.

Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
0 Kommentare
2 Pingbacks