Wer kennt das nicht, man möchte sich gerne per Remote Desktop Verbindung auf einen Server schalten und bekommt diese entzückende Meldung. Meistens liegt es daran, das Kollegen sich zwar auf dem Server angemeldet haben, jedoch keine Lust hatten, sich wieder ordentlich abzumelden. Zudem kommt dann auch noch dazu, das man das ja auch mit der Consolen Verbindung machen kann, so das erst mal niemand mehr zugriff bekommt.
Die Möglichkeiten sind dann auch noch recht begrenzt, entweder man hat noch einen zweiten Server, der die Terminal Server Umgebung bereitstellt. Dann kann man sich über diesen mit dem betroffenen Server verbinden und eine der vorhandenen Verbindungen abmelden (nicht nur trennen, das sind sie schon meistens), oder zumindest sehen, wer dort angemeldet ist und diesen bitten, seine Sitzung zu beenden. Allerdings kann es vorkommen, das einem diese Möglichkeit nicht zur Verfügung steht und man nicht die Lust hat, oder die Zeit, alle Kollegen zu interviewen, wer den nun grade auf dem Server ist. Oft sind die Verbindungen schon ein paar Tage getrennt und die Leute haben es einfach vergessen.
Hier nun eine andere, etwas gemeine aber funktionierende Lösung. Es gibt ein Tool mit dem netten Namen xcmd.exe (download), mit diesem Tool kann man eine CMD auf dem Server starten und so werden alle DOS Befehle auf dem Server ausgeführt.
xCmd 1.7 for NT4/2000/XP – executes commands remotely
Freeware! 2007-2009 Gerd Feldkirch, gerd@feldkir.ch
2001 Zoltan Csizmadia, zoltan_csizmadia@yahoo.com
Usage: xCmd.exe \\computer [options] command/exe arguments
Options:
/D:directory Set working directory
Default: Remote „%SystemRoot%\System32“
/IDLE Idle priority class
/NORMAL Normal priority class
/HIGH High priority class
/REALTIME Realtime priority class
/C Copy the specified program to the remote machine’s
„%SystemRoot%\System32“ directory
Commands’s exe file must be absolute to local machine
/C:filename Copy the specified file to the remote machine’s
„%SystemRoot%\System32“ directory
/DL:localdir Local directory to be copied
/DR:remotedir Remote path of the directory to be copied
/INTERACTIVE Enables a program to interact with the desktop
/SYSTEM Run the remote process in the System account
/USER:user User for remote connection
/PWD:{password|*} Password for remote connection
/NOWAIT Don’t wait for remote process to terminate
/QUIET Don’t show program information
/CT:s Connection timeout in seconds
Examples:
xCmd.exe \\remote cmd // Starts a „telnet“ client
xCmd.exe \\remote /nowait runme.exe
xCmd.exe \\remote /user:administrator dir c:\
xCmd.exe \\remote /user:somebody /pwd:* /d:d:\ test1.exe
xCmd.exe \\remote /c /user:somebody /pwd:* /d:d:\ test2.exe
Notes:
– Input is passed to remote machine when you press ENTER.
– Ctrl-C terminates the remote process
– Command and file path arguments have to be absolute to remote machine
If you are using /c option, command exe file path must be absolute to
local machine, but the arguments must be absolute to remote machine
Wenn wir nun auf dem Server, mittels xcmd, eine Umgebung aufgerufen haben, ist der Rest eigentlich nur noch Formsache.
Mit dem Befehl „quser“ bekommen wir angezeigt, wer auf dem Server per RDP angemeldet ist. Natürlich steht auch die ID dabei, die wir nun nutzen können um den Benutzer abzumelden, dieser lautet (zum Beispiel für ID 3) „logoff 3“. Wenn wir nun noch mal mit „quser“ nachschauen, sehen wir das der Benutzer nicht mehr in der Liste auftaucht und können unsere eigene RDP Verbindung aufbauen.
Hier noch ein Hinweis, man muss es nicht über xcmd machen, da man die beiden befehle auch mit dem Server erweitern kann um den es geht, zum Beispiel „logoff 3 /Server:XYZ“, allerdings müssen dafür die Berechtigungen passen. Und wer möchte das der Befehl lokal auf dem Server ausgeführt wird, ist mit diesem Tool bestens bedient. Zudem kann man auch noch andere Dinge auf diese Weise erledigen, diese war nur ein Beispiel.