Wir hatten seit letzter Woche das Problem, dass wir uns auf einen Windows 2003-Server nicht mehr per Remotedesktop einwählen konnten und immer folgende Fehlermeldung bekamen:

Remotedesktop getrennt

Dieser Computer kann keine Verbindung mit dem Remotecomputer herstellen.

Wiederholen Sie den Verbindungsversuch. Wenn das Problem weiterhin besteht, wenden Sie sich an den Besitzer des Remotecomputers oder an den Netzwerkadministrator.

Alle anderen Dienste auf dem Server liefen zum Glück aber einwandfrei. Da der Rechner an einem anderen Standort steht, konnte wir nicht einfach lokal nachschauen und wollten das Problem aus der Entfernung lösen.
Aber wir haben erst mal keine Ursache für das Problem finden können. Netzwerkmäßig war alles in Ordnung, der Dienst lief, die Firewall blockierte nichts und es gab keine auffälligen Einträge in der Ereignisanzeige.

Irgendwann fiel uns auf, das in der Terminaldiensteverwaltung der Eintrag RDP-Tcp (Überwachnungsthread) für diesen Server fehlte. Normalerweise scheint man diese Verbindung über die Terminaldienstekonfiguration zu konfigurieren, aber leider kann man das Programm wohl nur lokal ausführen und mit keinem Remotecomputer verbinden.

Ich habe mich deshalb auf die Suche gemacht, wie man die Terminaldienste per VBScript auslesen und anpassen kann. Einstellen kann man ne Menge, aber es hat ne Weile gedauert, bis ich die richtige Einstellung gefunden habe. Fündig wurde ich auf der englischen Hey, Scripting Guy! Seite von Microsoft:

How Can I Determine Whether Terminal Services is Enabled on a Windows Server 2003 Computer?

Folgendes Script schaltet die Terminalserververbindungen auf einem Computer frei (einfach die Variable strComputer anpassen):

strComputer = "."

Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_TerminalServiceSetting")

For Each objItem in colItems
  objItem.SetAllowTSConnections(1)
Next