RDSMan

Der RDSMan lässt sich auf jedem aktuellen Windows PC- oder Serverbetriebssystem ausführen und ermöglicht einen schnellen Überblick sowie gängige Verwaltungsfunktionen in Umgebungen mit mehreren Windows Remotedesktop-Sitzungshosts (RDS Hosts), Remoteapps oder auch Citrix-Umgebungen.

Vorgesehen ist vor allem die Verwaltung von Multisession-Hosts in OnPremise oder auch Cloud-Umgebungen wie Azure.

Viele Administratoren oder Benutzer die die Rolle von einfachen IT-Aufgaben übernehmen haben seit Windows Server 2012 das Problem, dass es keine einfache, schnelle und gut bedienbare Oberfläche für die Verwaltung von Remotedesktopsitzungen mehr gibt. In früheren Versionen konnte dazu noch der Terminal Services Manager genutzt werden.

Aktuell bleibt nativ nur der Server-Manager oder der Taskmanager:

Remotedesktopdienste-Verwaltung via Server Manager

In jedem Fall waren hierzu bislang stets administrative Benutzerkonten oder sogar Zugriff auf die notwendigen Server direkt nötig, was aus Sicherheitsaspekten nicht optimal ist.

Funktionsübersicht

Mehrfachauswahl

Sowohl in der Liste der Benutzersitzungen als auch in der Serverliste sind Mehrfachauswahlen möglich, um schnell mehrere Aktionen auf einmal auszuführen.

Standardaktionen sind dabei:

  • Spiegeln von Sitzungen zu Ansicht oder Steuerung
  • Abmelden von Sitzungen
  • Trennen von Sitzungen
  • Nachrichten senden
  • Fragen senden
Gesamten Server auswählen

Soll ein Server gesperrt werden und daher alle Benutzer abgemeldet oder eine Nachricht gesendet werden? Ein einfacher Klick auf den oder die Server ermöglich entsprechende Massenaktionen.

Nachrichten senden

Aktive Benutzer können via Nachricht schnell und zuverlässig informiert werden. Die Nachricht erscheint dabei als Popup in der gewählten Sitzung und muss aktiv geschlossen werden. Sie erscheint immer im Vordergrund.

Statistik

Die Serverliste bietet einen direkten Überblick über alle aktiven, getrennten Benutzersitzungen. 

Eine Anzeige der jeweiligen Gesamtzahlen über alle hinterlegten RDS-Server kann ein- oder ausgeblendet werden.

Überblick behalten

Jede über RDSman ausgelöste Aktion kann über das Statusfenster nachverfolgt werden. In der Regel sind die Aktionen so schnell, dass hier kein Bedarf besteht.

Im Zweifelsfall hilft es jedoch zur Übersicht, welche Benutzer und Server betroffen sind.

Das Statusfenster kann auf Wunsch per Einstellung auch deaktiviert werden.

Filter setzen

In Umgebungen mit vielen Benutzersitzungen kann die Verwendung von Filtern sinnvoll sein.

Es können gezielt ausgewählte Benutzer ausgeblendet werden (blacklist) oder ausschließlich bestimmte Benutzer angezeigt werden (whitelist).

Auch können z.B. inaktive Sitzungen automatisch ausgeblendet werden.

Ist ein Filter aktiv, so wird dies in der oberen Ecke stets angezeigt.

Umfragen senden

Während Nachrichten nur in einer Richtung funktionieren, kann die Frage-Funktion genutzt werden, um auch ein Feedback der Benutzer zu erhalten.

Eine Umfrage kann mit eingenem Text für einen frei gewählten Zeitraum den ausgewählten Benutzern angezeigt werden:

Jeder Benutzer kann dabei mit Ja / Nein / Abbruch reagieren.

Im RDSMan werden die Ergebnisse/Antworten samt jeweiliger Zeit entsprechend aufbereitet dargestellt.

Die Funktion kann für ein schnelles Meinungsbild/Feedback einfacher Ja/Nein Fragen verwendet werden.

Einstellungen sperren

Wenn die grundlegenden Einstellungen zwar sichtbar, aber von RDSMan-Benutzern nicht verändert werden sollen, so können die Einstellungen wahlweise gesperrt oder auch vollständig aus dem Programmmenü entfernt werden.

Ansicht anpassen

Wenn die Anzeige der Server-/RDSHost-Liste für den gewüschten Einsatzzweck nicht benötigt wird, so kann die Liste im unteren Bereich ausgeblendet werden.

Sortierung

Ein Klick auf die Überschrift der jeweiligen Tabellenspalte sortiert Auf- oder Absteigend – wie man es von anderen Anwendungen bereits kennt.

Grade bei einer großen Zahl an Benutzersitzungen ist die Sortierung bei der Suche hilfreich.

Prozesse

Hängt eine Anwendung in einer Benutzersitzung und muss beendet werden? Kein Problem – es lassen sich die Prozesse auf jedem der hinterlegten Remotedesktopsitzungshosts aus dem RDSMan heraus anzeigen und auch mit einem Klick beenden.

Es muss sich niemand mehr erst auf den jeweiligen RDS-Host verbinden, um den Prozess zu beenden.

Erfordert Adminrechte auf dem Zielsystem!

Einstellungen

In den Programmeinstellungen lassen sich beliebige Hosts via Name, FQDN oder IP-Adresse angeben. Diese werden bei jedem Abruf entsprechend berücksichtigt.

Je nach Benutzer können die Einstellungen innerhalb der Anwendung auch gesperrt oder vollständig ausgeblendet werden.

Einige Einstellungen sind im GUI nicht verfügbar und können nur per Konfigurationsdatei – config.ini – angepasst werden.

Client spiegeln

Ist im RDSMan zu sehen, von welchem Client (Hostname & IP-Adresse) die Remotedesktopverbindung aufgebaut wird? Handelt es sich um einen Windows-Client?

Dann kann bei Bedarf auch nicht nur die Remotedesktopsitzung zu Supportzwecken gespiegelt werden, sondern auch die Sitzung des lokalen PCs, von dem die Sitzung aufgebaut wurde. (passende GPO vorausgesetzt)

RDSMan Profile

RDSMan soll mit einer Lizenz aber von verschiedenen Benutzern mit verschiedenen Einstellungen verwendet werden?

Kein Problem! – RDSMan kann bei Start auch eine alternative Konfigurationsdatei nutzen. Dafür ist der Parameter „-c“ gefolgt vom Pfad der Konfigurationsdatei anzugeben, Beispiel:

RDSMan.exe -c "\\file01\RDSMan\config3.ini"

Standard ohne Angabe eines Parameters erwartet die „config.ini“ im selben Verzeichnis, wie die RDSMan.exe selbst.

Hostauswahl

Solange alle angegebenen RDS-Hosts teil der gleichen Domäne sind und die Zugriffsberechtigungen passen, müssen die Hosts zur Abfrage der Sitzungen über RDSMan nicht teil einer oder sogar derselben Sitzungssammlung sein.

Es können auch Standalone-Hosts, Sitzungssammlungsmitglieder und „normale“ Server oder Windows-Clients angegeben werden, da diese von RDSMan jeweils einzeln angesprochen und abgefragt werden.

Systemauslastung - Prozessor & Arbeitsspeicher

Um einen laufenden Überblick über die aktuelle Last auf den im RDSMan hinterlegten Servern zu haben, lassen sich Arbeitsspeicher- und Prozessorauslastung mit abfragen und in einem frei wählbaren Intervall automatisch aktualisieren.

Engstellen bei der Verteilung/Auslastung können somit ebenfalls schnell erkannt werden.

Der Benutzer unter dem RDSMan ausgeführt wird, muss dafür auf dem Zielsystem Mitglied der lokalen Gruppe „Leistungsüberwachungsbenutzer“ (oder „Administratoren“) sein.

Testversion anfragen

Bitte aktiviere JavaScript in deinem Browser, um dieses Formular fertigzustellen.

Konfiguration

Übersicht

Alle Einstellungen werden in einer config.ini Datei gespeichert und können folglich auch manuell bearbeitet werden.

Derzeit sind die folgenden Einstellungen möglich:

[RDSMan]
RDSHosts=RDSH1,RDSH2,RDSH3
AllowMessage=1
AllowQuestion=1
AllowShadow=1
AllowDisconnect=1
AllowLogoff=1
AllowProcessManagement=1

ShadowConsentPrompt=0
HideHostList=0
ShowSettings=1
AllowSettingsChange=1
ShowStatusWindow=1
ShowTotalCount=1

HideInactiveUsers=1
AutoUpdateInterval=60
UserShowOnly=DOMAIN\User1,DOMAIN\User2,DOMAIN\User4
UserHideAlways=DOMAIN\Admin1,DOMAIN\Admin2,DOMAIN\Admin3
AllowClientShadow=1
ClientShadowUseHostname=1
ShowPerformance=1
PerformanceUpdateInterval=10

Details zu den Konfigurationen

Angabe der abzufragenden RDS-Sitzungshosts. Via Hostname, FQDN oder IP-Adresse. Getrennt mit Kommata.

Es können grundsätzlich nicht nur RDS-Hosts, sondern auch normale Windows-Server und -Clients angegeben werden.

Schaltet die Option „Nachricht senden“ in den Kontextmenüs der Sitzungs- und Servertabelle ein.

0 = deaktiviert
1 = aktiviert

Schaltet die Option „Frage stellen“ im Kontextmenü der Sitzungstabelle ein.

0 = deaktiviert
1 = aktiviert

Schaltet die Option „Sitzung spiegeln“ im Kontextmenü der Sitzungstabelle ein.

0 = deaktiviert
1 = aktiviert

Schaltet die Option „Sitzung trennen“ im Kontextmenü der Sitzungstabelle ein.

0 = deaktiviert
1 = aktiviert

Schaltet die Option „Sitzung abmelden“ im Kontextmenü der Sitzungstabelle ein.

0 = deaktiviert
1 = aktiviert

Schaltet die Option „Prozesse anzeigen“ im Kontextmenü der Sitzungstabelle ein.

0 = deaktiviert
1 = aktiviert

Kontrolliert die Verfügbarkeit der Einstellungen im GUI:

0 = Einstellungen im Einstellungsfester sind readonly
1 = Einstellungen sind veränderbar

Legt fest, ob die Benutzerzustimmung via Popup bei Aufbau einer Spiegelungssitzung zur Anzeige oder Steuerung erforderlich ist.

0 = keine Abfrage
1 = Benutzer vorher fragen

Die Spiegelung einer Sitzung ohne Abfrage erfordert die entsprechende Gruppenrichtlinie für den jeweiligen RDS-Host-/Benutzer.

Steuert die Anzeige der Serverliste im unteren Fensterbereich.

0 = wird angezeigt
1 = ausgeblendet

Steuert die Anzeige der Einstellungen im Programmmenü

0 = ausgeblendet
1 = wird angezeigt

Soll das Fenster mit dem Feedback zu jeder einzelnen Aktion angzeigt werden?

0 = ausgeblendet
1 = wird angezeigt

Steuert die Anzeige des Gesamtanzahl in der Titelzeile der Serverliste

0 = ausgeblendet
1 = wird angezeigt

Blendet inaktive Benutzersitzungen in der Liste aus

0 = inaktive Sitzungen werden angezeigt
1 = ausgeblendet

Legt die Whitelist fest, welche Benutzer ausschließlich angezeigt werden sollen.

Angabe getrennt via Komma, z.B. „DOMAIN\User1,DOMAIN\User2,DOMAIN\User4

Legt die Blacklist fest, welche Benutzer nie angezeigt werden sollen.
Dies könnten z.B. Administratorsitzungen sein.

Angabe getrennt via Komma, z.B. „DOMAIN\Admin1,DOMAIN\Admin2,DOMAIN\Admin3

Gibt das Interval in Sekunden an, in welchem Abstand ein Abruf der Sitzungen automatisch erfolgen soll.

Der Aufruf eines Kontextmenüs in einer der Tabellen stoppt dabei die automatische Aktualisierung. Eine manuelle Aktualisierung im Anschluss via F5 oder dem Button im oberen rechten Bereich startet das Interval erneut.

Wenn eine RDP-Verbindung von einem Windows Client aus aufgebaut wird und dieser im in den Details mit „Client“ und „Client-IP“ angezeigt wird, kann auch hier eine Sitzungsliste und eine Spiegelungssitzung aufgebaut werden.

Damit kann dann Support für den lokalen PC geleistet werden.
Im Gegensatz zu als Hosts hinzugefügten Clients ist hierfür keine Lizenz erforderlich bzw. erhöht nicht die Hostanzahl.

Die Sitzung wird standardmäßig mit der angezeigten Client-IP hergestellt. Soll stattdessen der Hostname aus der Spalte „Client“ verwendet werden, muss zusätzlich die Einstellung „ClientShadowUseHostname=1“ konfiguriert werden.

Ausschließlich in Verwendung mit „AllowClientShadow“ verwenden.

Siehe die Details von AllowClientShadow.

Zeigt, wenn die Berechtigungen stimmen, RAM- und CPU-Auslastung der Server mit an.

0 = aktiviert
1 = nicht aktiv

Standard-Aktualisierungsrate: 10 Sekunden, Anpassbar via „PerformanceUpdateInterval“

Der Benutzer unter dem RDSMan ausgeführt wird, muss dafür auf dem Zielsystem Mitglied der lokalen Gruppe „Leistungsüberwachungsbenutzer“ (oder „Administratoren“) sein.

Legt das Aktualisierungsintervall in Sekunden für „ShowPerformance“ fest, wenn aktiv.

Standard bei keiner Angabe: 10 Sekunden

Systemvoraussetzungen

Für das Spiegeln von Sitzungen (Ansicht/Steuerung) müssen die enstprechenden Gruppenrichtlininen auf den RDS-Hosts gesetzt sein.

Wichtig ist hier die Richtlinie „Regeln für Remotesteuerung von Remotedesktopdienste-Benutzersitzungen festlegen“:  Benutzerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopsitzungs-Host → Verbindungen

RDSman ist bisher in Umgebungen mit bis zu 70 RDSHosts und 1.000 aktiven Benutzern getestet.
Als Betriebssysteme funktionieren: 

  • Windows 7 / 8 / 10 / 11
  • Windows Server 2008 R2
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022

Ein installiertes .NET-Framework 4.7 wird vorausgesetzt.

Nach Benutzerrückmeldungen ebenfalls kompatibel, jedoch nicht von mir selbst getestet:

  • Citrix Virtual Apps (1912 CU2 auf WS2016)
Ein Betrieb auf Windows Virtual Desktop (WVD) bzw. Azure Virtual Desktop (AVD) in einer Multisession Umgebung sollte ebenfalls möglich sein. Ein Abruf der Hostnamen eines Sitzungspools erfolgt jedoch nicht automatisch und die Hostnamen müssten hier entsprechend einzelne eingetragen werden.

Berechtigungen

Mit RDSman lassen sich bestimmte Aufgaben auch ohne vollständige Administratorrechte von ausgewählten Standardbenutzern durchführen.

Via WMI kann dazu auf jedem Host/Terminalserver eine entsprechende Active Directory Gruppe hinterlegt werden (hier im Beispiel „ADGROUP\RDSFarm-Support“):

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName="RDP-Tcp") CALL AddAccount "ADGROUP\RDSFarm-Support",2

Die Einstellungen greifen bei nächster Anmeldung der zu verwaltenden Benutzersitzung.

Download

Für Download und Anfrage einer Testversion bitte das obige Formular verwenden.

Changelog / Release Notes

  • Anpassung der Tabellensortierung (Zeiten, Inaktivität, IP-Adressen)
  • Ermöglicht die Anzeige von CPU- und RAM-Auslastung pro Server
  • Konfigurationsparameter:
    ShowPerformance=1
    (und PerformanceUpdateInterval=10)
  • Kontextmenü für die Serverliste mit gängigen Aktionen (Abmeldung, Trennen, Nachrichten) inkl. Mehrfachauswahl
  • Kleinere Fehlerbehebungen/-optimierungen
  • Kleinere Fehlerbehebungen/-optimierungen
  • Speicherung der Fenstergröße- und Position beim Beenden
  • Anpassung der Sortierfunktion der Tabelle
  • Einführung der Möglichkeit auch den verbundenen RDP-Client zu steuern
    • AllowClientShadow=1
    • ClientShadowUseHostname=1 (Standardmäßig Client-IP als Ziel
  • Gesamtsummen in der Titelzeile der Hostliste anzeigen (per config.ini / ShowTotalCount=1)
  • Option ausschließlich aktive User anzeigen, keine getrennten Sitzungen (per config.ini / HideInactiveUsers=1)
  • Experimentell: Automatische Aktualisierung der Ansicht/Sitzungen (per config.ini / AutoUpdateInterval=60)
  • Black- und Whitelist Möglichkeit von Benutzern die nicht oder ausschließlich angezeigt werden sollen (per config.ini / UserShowOnly, UserHideAlways)
  • Erhöhung der maximalen Optionslänge auf 20480 Zeichen
  • Konfigurationsdatei per Startparameter änderbar
  • Bugfixes
  • Anzeigen und Beenden von Prozessen einzelner Benutzersitzungen
  • Erweiterung der maximalen Zeichenlänge für Host-Angabe (256->2048)
  • Ergänzung der Umfragefunktion