RemoteApps auf den Clients aktualisieren

Ich plane zurzeit eine RDS-Farm und beschäftige mich intensiv mit der Einrichtung und Konfiguration der RemoteApps auf den Clients. In dieser Umgebung geht es um Windows 7 Professional und Enterprise-Clients. Somit ist die Funktion „Standardverbindungs-URL“ nicht nutzbar, da dafür Windows 8 oder höher notwendig ist. Daher werde ich dieses PowerShell Skript für die Einrichtung der Verbindung nutzen. Das Ganze verbinde ich mit einer Gruppenrichtlinie, welche das Skript beim Anmelden des Benutzers ausführt.

Zuerst eine neue/vorhandene Gruppenrichtlinie anlegen/bearbeiten. Unter der Benutzerkonfiguration in die Einstellung „Richtlinien -> Windows-Einstellungen -> Skripts -> Anmeldung“ wechseln.
ms-remoteapps-gpo-logon

Mit einem Doppelklick auf „Anmeldung“ erscheint dieser Dialog. Dort in den Reiter PowerShell Skripts wechseln.
ms-remoteapps-gpo-logon-ps-scripts

Unten Links auf „Dateien anzeigen“ klicken. Damit das Skript ausgeführt werden kann, müssen die Dateien selbstverständlich abgelegt werden.
ms-remoteapps-gpo-logon-ps-scripts-files
Dort wird das PowerShell Skript und das die WCX-Datei des jeweiligen RDS-WebAccess-Servers abgelegt. Sind die Dateien abgelegt, kann der Explorer wieder geschlossen werden.

Abschließend muss noch der Aufruf des Skripts definiert werden. Dazu rechts auf die Schaltfläche „Hinzufügen“ klicken und in das erste Feld den exakten Namen des Skriptes. In das zweite Feld den Namen der WCX-Datei.
ms-remoteapps-gpo-logon-ps-scripts-configure

Ob die Verbindung erfolgreich eingerichtet ist, sieht man Client unter Start -> Systemsteuerung -> RemoteApp- und Desktopverbindungen.
ms-remoteapps-client-control-panel

Wie wird nun sichergestellt, dass die Verbindungen bzw. verfügbaren Anwendungen regelmäßig aktualisiert wird? Microsoft hat mitgedacht und dies über eine Aufgabe realisiert. Diese findet man auf dem Client in der Aufgabenplanung unter Microsoft -> Windows -> RemoteApp and Desktop Connections Update -> Username.
ms-remoteapps-client-default-task

Ein Blick auf den Trigger der Aufgabe „Update connections“ verrät uns, dass diese Aktualisierung selten bzw. nie durchgeführt wird. Wie viele MitarbeiterInnen werden um 0:00 Uhr noch Arbeiten? Maximal die Nachtschicht, der Rest bleibt auf der Strecke. Also doch nicht ganz durchdacht vom Hersteller… :-/

Abhilfe schafft einen weiteren geplanten Task welche über die (gleiche) Gruppenrichtlinie, genauer gesagt mit Hilfe von Group Policy Preference (GPP). Die Konfiguration des Objekts sieht wie folgt aus:
ms-remoteapps-gpp-task-new

ms-remoteapps-gpp-task-general

ms-remoteapps-gpp-task-trigger

ms-remoteapps-gpp-task-action
Wichtig! In vielen Artikeln wird bei Parameter tsworkspace,TaskUpdateWorkspaces2 angegeben. Schaut man sich die TSWorkspace.dll mit Tools wie NirSoft DLL Export Viewer näher an, findet man eine weitere Funktion mit dem Namen „TaskUpdateWorkspaces“. Nutzt man als Parameter TaskUpdateWorkspaces2 führt dies dazu, dass die Ausführung der Task auf den Clients durchschnittlich ca. 10 Minuten dauert. Nutzt man dagegen die Funktion TaskUpdateWorkspaces, ist die Aktualisierung deutlich schneller abgeschlossen (2,3,4 Sekunden maximal). Leider findet man im MSDN keinerlei Dokumentation zu den beiden Funktionen. Mich würde brennend der Unterschied interessieren… zurück zum Thema.

Sobald die Gruppenrichtlinie auf die Benutzer angewendet wird, gibt es in der Aufgabenplanung eine neue Aufgabe:
ms-remoteapps-gpp-task-client

Ab sofort wird bei jeder Anmeldung eines Benutzers die Verbindungen automatisch aktualisiert.