Tag-Archiv für » rds «

07 | 09 | 2018

HTML5-Client für RDS – große Freude mit kleinen Tücken

Geschrieben von um 20:16 Uhr

Anfang des Jahres hat Microsoft ohne viel Trara einen HTML5-Client für RDS herausgebracht. Ich habe mir das Ding angeschaut und war vom ersten Test ziemlich begeistert. Besonderheiten der neuen Komponente in Kürze:

  • einsetzbar nur für eine komplette RDS-Bereitstellung, nicht für den Zugriff auf einzelne Server
  • ist fest verheiratet mit RDWeb (und ersetzt ihn, wenn man den Webclient produktiv veröffentlicht)
  • erfordert zwingend den RD Gateway (und somit SSL-Zertifikate, denen ohne Wenn und Aber vertraut wird)
  • Drucker- und Zwischenablagenumleitung werden unterstützt, Laufwerke und SmartCard (noch) nicht, von anderer Peripherie ganz zu schweigen
  • Die RDS-Infrastruktur – Broker, RDWeb und Gateway – muss auf Server 2016 oder 2019 laufen (Worker können aus der 2012R2-Generation sein)
  • RDSCALs müssen per User vergeben werden (Device CALs würden sonst sehr schnell verbraucht werden)
  • Nach der offiziellen Guidance (https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-web-client-admin) muss jeder RDWeb-Server zum Zeitpunkt der Installation Zugang zum Internet, d.h. zur PowerShell Gallery, haben.

Da ich kein großer Freund von Previews bin, habe ich die Testumgebung mit Server 2016 aufgebaut. Deshalb muss ich auf meinem RDWeb-Server zunächst einmal das NuGet-Modul updaten:

Install-Module -Name PowerShellGet -Force

Danach muss die PowerShell geschlossen und neu gestartet werden. So auf die neueste NuGet-Version gebracht, kann das Management-Modul für den Web Client installiert werden:

Install-Module -Name RDWebClientManagement

Das Modul exportiert 12 Cmdlets mit vielversprechender Funktionalität:

Uninstall-RDWebClient
Get-RDWebClientBrokerCert
Import-RDWebClientBrokerCert
Remove-RDWebClientBrokerCert
Get-RDWebClientDeploymentSetting
Set-RDWebClientDeploymentSetting
Find-RDWebClientPackage
Get-RDWebClientPackage
Install-RDWebClientPackage
Publish-RDWebClientPackage
Uninstall-RDWebClientPackage
Unpublish-RDWebClientPackage

Schauen wir mal, was Find-RDWebClientPackage so findet… Das sieht vielversprechend aus:

packageId                       : rd-html5
version                         : 1.0.0
author                          : Microsoft
summary                         : The Remote Desktop Web Client
minRDWebClientManagementVersion : 1.0.0
url                             : https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE2mzyl
_baseVersion                    : 1.0.0

Doch was ist das? Bereits durch dieses „Finden“ wurde der Ordner „C:\Program Files\RemoteDesktopWeb“ erzeugt, mit einem Ordner „Internal“, auf den ich gar keine Rechte habe! OK, „Deny Everyone Read“ ist ein bisschen plump, aber Internal ist Internal. Drin sind drei Ordner: „Clients“, „Config“ und „Temp“. Alle drei sind noch leer bis auf die „Config\deploymentSettings.js“, die folgenden Inhalt hat:

var DeploymentSettings = {
    "deploymentType":  "rdWeb",
    "suppressTelemetry":  false
}

Echt jetzt? Es wird also früh vorgesorgt, dass die Telemetrie schön an ist. Weiter im Text. Sowohl Get-RDWebClientPackage als auch Install-RDWebClientPackage haben keinen Parameter, mit dem man einen lokalen Speicherort angeben kann, meine RDWeb-Server brauchen also wirklich Zugang zum Internet, damit ich den Web Client installiert bekomme. Im Moment hat mein RDWeb-Server Internet, also installiere ich:

Install-RDWebClientPackage

(das ausgepackte Archiv aus dem Internet liegt nun unter „C:\Program Files\RemoteDesktopWeb\Internal\Clients\4csqnmex.0iv“…)

Import-RDWebClientBrokerCert C:\temp\RDWeb.cer

(das Zertifikat wurde nach „C:\Program Files\RemoteDesktopWeb\Internal\Config\brokercert.cer“ kopiert…)

Publish-RDWebClientPackage -Type Test -Latest

Das war’s! Bereits im IE11 bekomme ich unter https://F.Q.D.N/RDWeb/webclient-test eine moderne Oberfläche angezeigt, verbunden mit dem Hinweis, dass Audio nicht geht: OK, IE11 ist nicht gerade ein HTML5-fähiger Browser…
In Chrome sieht es schon ganz anders aus:

Soweit, so gut. Sieht richtig gut aus, und die Performance haben die RDSGURUS ja auch positiv getestet. Schauen wir mal, was man so einstellen kann, denn oben rechts ist ja ein Zahnrad:

Na, da hat es sich ja richtig gelohnt, einen Dialog dafür zu basteln.
Freunde, diese Telemetrie-Einstellung ist gar nicht so harmlos wie sie aussieht. Wenn ich nämlich die Telemetrie anlasse und der Testumgebung den Internet-Zugang wegnehme, so startet der Web-Client gar nicht erst!

Hmm, das ist nicht schön. Zum Glück betrifft das den Rechner, von dem aus man den Browser öffnet, und nicht die gesamte Bereitstellung. Macht ja auch irgendwie Sinn, dass die am Frontend Telemetrie-Daten sammeln. Könnte diese Zeile sein:

Nicht umsonst hat Microsoft dem PowerShell-Modul das Cmdlet Set-RDWebClientDeploymentSetting mitgegeben, damit kann man nämlich auch ohne Internet-Zugang die Telemetrie ausschalten:

Set-RDWebClientDeploymentSetting -Name SuppressTelemetry -Value $true

Und falls sich jemand die Frage gestellt hat, ob das Ganze auch auf anderen Betriebssystemen geht (z.B. weil er MacOS-User ist und von den ewigen Troubles mit dem RDP Client die Nase voll hat)…

Happy RDSing!

Tags » , , , , , , «

+

12 | 11 | 2016

RDExSessionInfo – neue Version 1.1.0.0

Geschrieben von um 13:36 Uhr

Ich hatte gerade etwas Zeit und habe das RDExSessionInfo-Modul aktualisiert. Nun kann auch ein Server remote abgefragt werden. Außerdem liefern Datums-/Zeitwerte, die keinen sinnvollen Wert haben, ab sofort NULL zurück und nicht 01.01.1601 🙂

Alle Infos und Download wie immer unter https://it-pro-berlin.de/rdexsessioninfo-de, Download aus der PSGallery unter https://www.powershellgallery.com/packages/RDExSessionInfo/1.1.0.0 und aus der TechNetGallery unter https://gallery.technet.microsoft.com/RDExSessionInfo-a-79a18fac .

Happy automating!

Tags » , , , , «

+

09 | 10 | 2016

PowerShell Hack: Mit RDExSessionInfo RDP-Daten geliefert bekommen

Geschrieben von um 0:01 Uhr

Eigentlich ist es eher ein C#-Hack, aber wir wollen ja nicht zu pingelig sein 😉

Die Schwierigkeit, in PowerShell sinnvolle Daten über RDP-Sitzungen zu bekommen, war mir schon sehr lange ein Dorn im Auge. Ich habe mich aber die ganze Zeit davor gedrückt, die Windows-API anzuzapfen und die Infos von dort zu ziehen, aber nachdem Gernot Meyer in diesem TechNet-Thread) schon mal einen Proof Of Concept vorgenommen hat, konnte ich nun nicht mehr an mich halten und habe ein PowerShell-Modul namens RDExSessionInfo erstellt, das einige wichtige Basisdaten liefert:

  • Username, Domäne, Sitzungs-ID und -Status
  • Zeiten für Logon, Connect, Desconnect und Last Input (als DateTime-Objekt)
  • Upstream und Downstream Bytes
  • Client Build, Name und IP

Das ganze habe ich auf der PSGallery veröffentlicht, viel Spaß damit! Eine Status-Seite und kleine Einführung findet man hier im Blog.

Tags » , , , , «

+

13 | 09 | 2013

RDS Session Shadowing ist zurück in Server 2012R2

Geschrieben von um 17:16 Uhr

Nachdem die Freude über die neuen RDS-Features im Server 2012 dadurch etwas gedämpft wurde, daß einige wichtige Features fehlten, sind zumindest einige davon mit dem neuen R2-Release wieder zurück, allem voran Session Shadowing.

Vom Server Manager aus lassen sich die Session auflisten und das Shadowing wie gewohnt aufrufen:

RDS_R2_Context_Menu

Ebenfalls wie gewohnt wird der User in einem modalen Fenster nach seiner Zustimmung gefragt…

RDS_R2_Prompt_for_Consent

…und danach kann die Sitzung ferngesteuert werden:

RDS_R2_Shadowing

Wurde aber auch Zeit 🙂

Tags » , , , «

+