Batch RDP Verbindung starten mit Benutzername und Passwort
Aus znilwiki
RDP-Verbindungen werden unter Windows seit eh und je über das Programm mstsc.exe gestartet.
Nun war ich bei einem Kunden gezwungen mich nacheinander an 53 Terminalservern anzumnelden ... um 53 mal das gleiche Programm zustarten usw.
Per dsquery.exe computer und der Angabe der Start-OU als Distinguished Name habe ich schnell eine Liste aller Server unterhalb dieser OU bekommen.
In Notepad++.exe habe ich das schnell auf die Rechnernamen reduziert, nun wollte ich mir eine Batch bauen die sich nacheinander an jeden Terminalserver anmeldet.
Der mstsc.exe kann man aber keinen Benutzernamen oder Passwort übergeben ... also was tun?
Lösung (Funktioniert ab Windows Vista / Windows Server 2008):
Wir nutzen folgenden Befehl:
cmdkey /generic:TERMSRV/TESTSERVER /user:"ZNIL\USER13" /pass:"test1234"
Damit hinterlegen wir die Anmeldeinformationen für eine Terminalserververbindung an dem Server TESTSERVER für den Benutzer ZNIL\USER3 mit dem Passwort test1234
Nun können wir mit
mstsc /v:TESTSERVER
die Verbindung starten und werden direkt verbunden (sofern der Terminalserver das Speichern von Passwörtern erlaubt).
Damit unsere Batch-Datei ggf. auf das Beenden der Terminalsitzung wartet können wir den Befehl start.exe nutzen:
start /wait mstsc /v:TESTSERVER
Im Anschlüss können wir mittels
cmdkey /delete:TERMSRV/TESTSERVER
die gespeicherten Anmeldedaten wieder löschen.
Das ganze habe ich mir für einen anderen Kunden als Batch-Kommandozeilen-Tool gebaut:
connect.cmd
@echo off
cmdkey /generic:"%1" /user:"ZNIL\USER13" /pass:"test1234"
mstsc /v:%1
cmdkey /delete:"%1"
speichern und mit
connect.cmd <Servername>
aufrufen.
War eine kleine Vereinfachung da ich dort in einer Citrix -> RDP -> RDP -> RDP Kette durchhangeln musste um am Ende mich auf ein paar duzend verschiedener Server anzumelden - mit einem Passwort was schwer zu merken und zu tippen war. Die Batch temporär erstellt und schon war es einfacher.