Wie der Zufall es so wollte, fand sich am Ende des Schreibens von Windows: RemoteApps für verschiedene Benutzer per Aufgabe automatisch starten und trennen – Der lange Weg eine simplerere Möglichkeit, das Vorhaben umzusetzen bzw. nun deutlich zu vereinfachen.
Umsonst waren die vorigen Bemühungen dennoch nicht, da z.B. das Thema mit der Aufgabenplanung nach wie vor relevant hat. Um es relativ kurz zu machen: Statt auf eigene AutoIt-Skripte zum Automatisieren der Remotedesktopverbindungsanmeldung zu setzen wird nun Remote Desktop Plus verwendet, ein Wrapper für die “mstsc.exe” von Windows.
Einer von vielen Vorteilen von Remote Desktop Plus ist die Möglichkeit, quasi alles über Befehle und Parameter steuern zu können, dies schließt die Angabe von Benutzername und Kennwort mit ein. Also Bordmittel aufgebohrt, wenn man so möchte.
Vorbereitungen
Zunächst benötigt man die rdp.exe, die einfach heruntergeladen werden kann. Optional wird vom gleichen Anbieter Gencrypt zum Verschlüsseln des RDP-Kennworts benötigt. Ferner, wenn’s als Aufgabe erfolgreich laufen soll, wird Solway’s Task Scheduler benötigt. Zu guterletzt, damit man nach dem Trennen die Meldung automatisch loswird, wird noch die “ClickDiscRAWa.exe” bzw. “ClickDiscRAWa-x64.exe” aus dem Archiv RemoteApp_trennen_abmelden.zip benötigt.
Die Hintergründe zu dem wieso, weshalb und warum man diese Tools verwenden sollte, bitte in den zugehörigen Beiträgen nachlesen:
Windows: RemoteApps trennen (betrifft ClickDiscRAWa.exe)
Windows: Alternativen zur Aufgabenplanung
Damit das nachfolgende Skript noch kompakter ist, wurde das Trennen der RDP-Sitzung ebenfalls als RemoteApp hinterlegt. Dazu reicht es aus, schlicht “tsdiscon” als RemoteApp z.B. mit dem Namen “Trennen” freizugeben.
Der kurze Weg
So sieht das Batch-Skript für einen Benutzer aus:
@echo off title RemoteApp(s) starten und die Sitzung trennen rem Konfiguration set RDPServer= set RDPDomain= set RDPUsername= set EncryptedRDPPassword= rem --- rem RemoteApps starten rdp.exe Outlook.rdp /v:%RDPServer% /domain:%RDPDomain% /u:%RDPUsername% /pe:%EncryptedRDPPassword% rdp.exe Firefox.rdp /v:%RDPServer% rdp.exe "3CXPhone for Windows.rdp" /v:%RDPServer% rdp.exe JTL-Wawi.rdp /v:%RDPServer% rem --- rem Pause damit die RemoteApps vollstaendig laden/starten koennen timeout /t 60 /nobreak rem --- rem Trennen und/oder Abmelden rdp.exe /remoteapp:"||Trennen" /v:%RDPServer% /domain:%RDPDomain% /u:%RDPUsername% /pe:%EncryptedRDPPassword% REMstart ClickDiscRAWa-x64.exe<- Siehe Update vom 15.11.2018 timeout /t 60 /nobreak taskkill /im mstsc.exe /f
Diese Befehlszeilen kann man für jeden Benutzer wiederholen oder eigene Skripte pro Benutzer anlegen. Nur für die erste RemoteApp müssen Anmeldedaten angeben werden. Sobald eine Sitzung besteht und verbunden ist, werden alle nachfolgenden RemoteApps in eben dieser gestartet. Das klappt aber nur, wenn keine zu große Pause zwischen den RemoteApps liegt. Im Zweifelsfall bei jeder RemoteApp die Zugangsdaten mitgeben.
Statt der RDP-Verbindungsdateien können die RemoteApps auch direkt mit ihrem Namen angesprochen werden:
rdp.exe /v:%RDPServer% /remoteapp:"||Outlook" /domain:%RDPDomain% /u:%RDPUsername% /pe:%EncryptedRDPPassword%
Ein weiteres Umstellungsargument
Zusätzlich nimmt einem Remote Desktop Plus das “Vertrauen sie diesem Server/Zertifikat” ebenfalls ab. So das sich mit dieser Umstellung dieser Punkt als abgehakt betrachtet werden kann.
Troubleshooting
Kein Licht ohne Schatten, wobei es halb so schlimm ist: Beim Ausprobieren klappte manchmal das Anmelden nicht und es erscheint der “Windows-Sicherheit”-Anmeldedialog für die Remotedesktopverbindung. Der bisherigen Erfahrung nach ist das dann auf eine hängen gebliebene “mstsc.exe” zurückzuführen, die nach irgendeinem Fehlversuch im Hintergrund noch läuft. Diese einfach per Task-Manager oder
taskkill /im mstsc.exe /f
abschießen und schon läuft’s wieder.
Etwas unberechenbarer ist die Meldung nach dem Trennen der RemoteApps, wozu die “ClickDiscRAWa-x64.exe” zum automatischen Anklicken dient. Zum einen spielt die Reihenfolge im Skript eine Rolle, soll heißen:
- Erst “rdp.exe…” ausführen, dann
- “ClickDiscRAWa-x64.exe” starten
Andernfalls tauchen gleich mehrere RemoteApp-getrennt-Meldungen auf, die dann nicht mehr automatisch weggeklickt werden. Ferner kommt es vor, das überhaupt keine Meldung erscheint, was als Dauerzustand eigentlich ideal wäre, aber leider nicht so ist. Dann würde allerdings ewig die “ClickDiscRAWa-x64.exe” weiterlaufen bzw. bei jedem weiteren Durchlaufen des Skripts weitere Instanzen gestartet werden. Als kleinen workaround kann man diese nach einer kurzen Pause beenden:
... start ClickDiscRAWa-x64.exe timeout /t 5 taskkill /im start ClickDiscRAWa-x64.exe /f
Ebenfalls hilfreich ist eine Pause beim Benutzerwechsel, da es sonst zu Schwierigkeiten bei der Anmeldung kommen kann.
rdp.exe... für Benutzer A timeout /t 60 rdp.exe... für Benutzer B
Schlussbemerkung
Ursprünglich hatte ich genau nach solch einer Lösung gesucht, aber seinerzeit nichts gefunden. Waren wohl die falschen Schlüsselwörter für die Suchmaschine 😉 So oder so waren beide Wege durchaus lehrreich und interessant. Remote Desktop Plus bietet aber noch weit mehr, als es hier für diesen einen Zweck verwendet wurde, reinschauen lohnt sich also.
Update 15.11.2018
Leider erwies sich “ClickDiscRAWa-x64.exe” nicht als zuverlässig in diesem Kontext. Von daher besser auf die Kombi aus “timeout” und “taskkill”-Lösung setzen. Das Skript wurde entsprechend geändert.
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