Remotedesktop über WMI und PowerShell remote aktivieren

    RemotedesktopMicrosofts Remotedesktop ist nicht auf Terminal-Server beschränkt, sondern dient vielen Admins auch für die Fernwartung von Client-PCs. Dabei ist es oft notwendig, dieses Feature auf entfernten Rechnern erst zu aktivieren. Dies lässt sich über WMI erreichen.

    Um RDP-Verbindungen auf dem lokalen PC unter Windows 7/8 zuzulassen, bietet sich die Verwendung der entsprechenden Funktion in der System­steuerung an. Sie schaltet nicht nur dieses Feature frei, sondern aktiviert zudem die erforderlichen Firewall-Regeln.

    Möchte man Remotedesktop auf einer größeren Zahl von PCs aktivieren, also zum Beispiel auf allen Rechnern in einer OU oder Domäne, dann wird man dafür Gruppenrichtlinien verwenden (siehe dazu: Remotedesktop in Windows 7/8.x und Server 2012 (R2) mit GPO aktivieren).

    Will man Remotedesktop nur auf einzelnen entfernten PCs zulassen oder auf solchen, die nicht Mitglied in einer Domäne sind, dann bietet sich WMI als Alternative an. In Workgroup-Umgebungen sollte man vorher sicherstellen, dass sich der Remote-PC über WMI verwalten lässt.

    WMI-Aufruf über wmic

    Ziemlich einfach ist in diesem Fall der Aufruf des Kommandozeilenprogramms wmic, weil dieses ein vordefiniertes Alias namens RDToggle mitbringt. Es erlaubt im ersten Schritt, den Remotedesktop-Status abzufragen:

    wmic RDToggle get AllowTSConnections

    Um den Status von Remotedesktop zu ändern, ruft man die Funktion SetAllowTSConnections auf. Mit dem ersten Parameter lässt man RDP-Verbindungen zu, wenn er den Wert 1 hat. Mit 0 blockiert man Remotedesktop-Verbindungen, wobei bestehende Sessions unterbrochen werden.

    Der zweite Parameter legt fest, ob auf dem Zielrechner die Firewall-Regeln für Remotedesktop angepasst werden sollen. Folgender Aufruf aktiviert Remotedesktop plus die dazugehörige Firewall-Regel, um Verbindungen durchzulassen:

    wmic /node:<Name-des-PCs> RDToggle where ServerName="<Name-des-PCs>" call SetAllowTSConnections 1, 1

    Übergibt man die Parameter 0, 1 an SetAllowTSConnections, dann wird Remotedesktop deaktiviert und gleichzeitig die Firewall so zurückgesetzt, dass RDP-Verbindungen nicht durchgelassen werden.

    WMI mit PowerShell

    Alternativ zu wmic.exe kann man auch PowerShell verwenden, um Remotedesktop über WMI zu aktivieren. Zuständig ist dafür das Cmdlet Get-WmiObject, das über den Parameter -ComputerName auch entfernte Rechner ansprechen kann.

    Sein Aufruf ist komplizierter als der von wmic, weil mangels eines Alias der Namespace und die WMI-Klasse explizit angegeben werden müssen. Der Namespace root\cimv2\TerminalServices wurde mit Vista eingeführt, so dass der folgende Befehl nicht unter XP funktioniert:

    $RDC = Get-WmiObject -Namespace "root\cimv2\TerminalServices" -Class win32_terminalservicesetting -ComputerName <Remote-PC>

    Nach dem Erzeugen des WMI-Objekts ruft man wie unter wmic.exe die Methode setAllowTSConnections auf, wobei die Parameter erwartungsgemäß die gleiche Bedeutung haben:

    $RDC.setAllowTSConnections(0,1)

    Ist der angezeigte Return-Code 0, dann ist die Operation geglückt. Man kann sich vom aktuellen Status durch den Aufruf von

    $RDC | select ServerName, AllowTSConnections

    überzeugen.

    Keine Kommentare