Xen Data Erweiterung¶
Einleitung¶
Die XenData-Erweiterung ermöglicht das Abrufen verschiedener Daten von Citrix-Systemen. Sie ist mit mehreren Versionen von XenApp-Servern und XenDesktop-Brokern kompatibel. Alle Daten werden bei Bedarf aus einer Active Directory-Quelle für die entsprechenden Objekte abgerufen.
Anforderungen¶
EducateIT PowerShell Service (Version 1.2.0 oder höher) und Windows PowerShell (Version 2.0 oder höher) müssen auf dem System mit Raptor und XenData-Erweiterung installiert sein.
Windows PowerShell (Version 2.0 oder höher) muss auf jedem direkt angesprochenen Citrix-System installiert sein.
WinRM muss sowohl auf dem System mit Raptor Server und XenData-Erweiterung als auch auf jedem direkt angesprochenen Citrix-System eingerichtet sein.
Die passenden PowerShell SDKs für XenApp und XenDesktop müssen auf jedem direkt angesprochenen Citrix-System installiert sein.
WMI muss aktiviert und netzwerkweit zugänglich sein, um Prozessinformationen für Benutzer und Computer abrufen zu können.
Fakten¶
Name |
XenData |
Bezeichner |
|
Version |
2.2 |
Funktionen |
Adapter |
Abschnitte |
|
Informationsblöcke |
|
Anforderungen prüfen¶
In diesem Abschnitt erfährst du, wie du alle Anforderungen der XenData-Erweiterung detailliert überprüfen kannst. Je nach Umgebung und Setup sind möglicherweise nicht alle Anforderungen für dich relevant. Deshalb ist jede Überprüfung in einem eigenen Abschnitt organisiert, sodass du die nicht relevanten Teile einfach überspringen kannst.
So startest du eine PowerShell-Eingabeaufforderung¶
Für die meisten der folgenden Tests benötigst du eine geöffnete PowerShell-Eingabeaufforderung. Abhängig von der verwendeten Betriebssystemversion gibt es viele verschiedene Möglichkeiten, wie du eine solche Eingabeaufforderung öffnen kannst.
Es gibt die grundlegende PowerShell-Eingabeaufforderung und eine komfortablere Umgebung namens PowerShell ISE. Wenn möglich, öffne immer die PowerShell ISE anstelle der einfachen Eingabeaufforderung. Sie unterstützt die intelligente Befehlsvervollständigung und bietet viele weitere hilfreiche Funktionen.
Windows 8/8.1/10/11, Server 2012/2016¶
Der einfachste Weg, die PowerShell zu öffnen, ist die Suche:
Klicke auf das Suchsymbol in der Taskleiste oder drücke Win+S, um das Suchfeld zu öffnen.
Gib
PowerShell
in das Suchfeld ein.Klicke auf Windows PowerShell oder drücke die Eingabetaste, wenn der Eintrag ausgewählt ist.
Windows 7, Server 2008¶
Der einfachste Weg, die PowerShell zu öffnen, ist die Suche:
Klicke auf den Start-Button.
Gib „PowerShell“ in das Suchfeld des Startmenüs ein.
Klicke auf Windows PowerShell oder drücke die Eingabetaste, wenn der Eintrag ausgewählt ist.
Falls PowerShell auf deinem Rechner nicht gefunden wird, nutze die Option „Windows-Funktionen aktivieren oder deaktivieren“, um PowerShell und die PowerShell ISE zu installieren.
PowerShell-Version überprüfen¶
Öffne eine PowerShell-Eingabeaufforderung.
Gib den Befehl
Get-Host
ein und drücke die Eingabetaste.
Details über den derzeit verwendeten Host werden angezeigt. Überprüfe das Feld mit der Bezeichnung „Version“. Die Version sollte höher als 2.0 sein.
Im folgenden Screenshot siehst du, wie der Befehl Get-Host
verwendet wird.
Computer, die du überprüfen solltest¶
Führe diese Überprüfung auf dem System durch, auf dem der Raptor-Server installiert ist, und auf jedem System, das direkt von der XenData-Erweiterung angesprochen wird. Das sind alle Systeme, die in der Konfiguration in einem der RemoteComputerList
-Werte aufgeführt sind.
Stelle sicher, dass auf allen diesen Systemen eine aktuelle Version von PowerShell installiert ist.
Überprüfung des installierten PowerShell-Dienstes¶
Der EducateIT PowerShell-Dienst, mindestens Version 1.2.0, muss auf dem System installiert sein, auf dem Raptor und die XenData-Erweiterung laufen. Um das zu überprüfen, öffne die Liste der Dienste und schau nach, ob der Dienst EducateIT - PowerShell-Dienst in der Liste enthalten und gestartet ist.
Die Version des Dienstes wird automatisch beim Start der Erweiterung geprüft. Wenn der installierte Dienst nicht die richtige Version hat, stoppt die Erweiterung mit einer Fehlermeldung im Protokoll. In diesem Fall musst du den Dienst zuerst aktualisieren.
Installiere immer die neueste Version des PowerShell-Dienstes. Neuere Versionen sind immer abwärtskompatibel zu früheren Versionen der Erweiterung.
Überprüfung, ob WinRM funktioniert¶
WinRM wird verwendet, um eine PowerShell-Sitzung auf einem entfernten Computer zu erstellen. Alle Befehle werden in dieser entfernten Sitzung ausgeführt. Du musst dies nicht überprüfen, wenn du nur einen einzelnen lokalen Link verwendest und keine RemoteComputerList
festgelegt ist.
Um zu überprüfen, ob WinRM funktioniert, folge den nächsten Schritten. Sieh dir auch den folgenden Screenshot an, wie die gesamte Sitzung im PowerShell-Fenster aussieht.
Öffne eine PowerShell-Eingabeaufforderung auf dem System, auf dem Raptor installiert ist.
Gib den folgenden Befehl ein und ersetze die Werte in den Klammern durch die tatsächlichen Werte aus deiner Konfiguration. Dieser Befehl erstellt eine neue entfernte PowerShell-Sitzung und speichert sie in der Variable
$s
.$s = New-PSSession -ComputerName <Remote Computer Name> -Credential <Domain>\<User>
Angenommen, du hast einen Link konfiguriert, wie im folgenden Beispiel gezeigt.
1<Module name="XenData"> 2 <List name="Links"> 3 <ListEntry> 4 <Value name="Name">LinkA75</Value> 5 <Value name="Version">7.5</Value> 6 <Value name="RemoteComputerList"> 7 server02 8 server03 9 </Value> 10 <Value name="RemoteUsername">Administrator</Value> 11 <Value name="RemotePassword">****</Value> 12 </ListEntry> 13 </List> 14 ... 15</Module>
In diesem Fall musst du die gesamte Überprüfung für beide Server
server02
undserver03
durchführen. Um den ersten Server, in der DomäneEDUCATEIT
, zu überprüfen, würdest du den Befehl folgendermaßen verwenden:$s = New-PSSession -ComputerName server02 -Credential EDUCATEIT\Administrator
Es erscheint eine Passwortaufforderung, wie im Screenshot unten dargestellt, in der du das Passwort für den angegebenen Benutzer eingeben musst.
Gib den folgenden Befehl ein, um die erstellte Sitzung interaktiv zu betreten.
Enter-PSSession $s
In der neuen interaktiven Sitzung gib den folgenden Befehl ein:
Get-Host
Überprüfe, ob im Feld mit der Bezeichnung „Name“
ServerRemoteHost
angezeigt wird.Gib den folgenden Befehl ein, um die Remote-Sitzung zu beenden:
Exit-PSSession
Entferne die Sitzung mit dem folgenden Befehl:
Remove-PSSession $s
Wenn du all diese Befehle ohne Warnungen oder Fehlermeldungen ausgeführt hast, funktioniert die WinRM-Verbindung für den verwendeten Host korrekt.
Zu überprüfende Computer¶
Führe diese Überprüfung auf dem System durch, auf dem der Raptor-Server installiert ist, und auf jedem System, das direkt von der XenData-Erweiterung angesprochen wird. Dies betrifft jedes System, das in der Konfiguration in einem der RemoteComputerList
-Werte aufgelistet ist.
Vergewissere dich, dass die Verbindung vom Raptor-Server zu jedem der Remote-Hosts funktioniert.
Was kannst du bei Fehlern tun?¶
Gib den folgenden Befehl in einer PowerShell-Eingabeaufforderung ein, um ein vollständiges Dokument zur Fehlerbehebung von WinRM-Problemen in PowerShell zu erhalten:
Get-Help about_Remote_Troubleshooting
Überprüfung der installierten SDKs¶
Die XenData-Erweiterung verwendet spezielle PowerShell-Befehle, die von „Snap-ins“ bereitgestellt werden. Wenn du Daten von einem XenApp-Server oder Desktop-Broker abrufen möchtest, musst du sicherstellen, dass das Citrix SDK auf diesem Server installiert ist.
XenDesktop Broker Version 7.5¶
Öffne eine PowerShell-Eingabeaufforderung auf dem Desktop-Broker.
Gib den folgenden Befehl ein:
Add-PSSnapin Citrix.Broker.Admin.V2
Du solltest keine Fehlermeldung erhalten. Du kannst den folgenden Befehl ausprobieren, um zu sehen, ob alles funktioniert:
Get-BrokerSession
Dies sollte eine Liste mit allen offenen Sitzungen auf diesem Desktop-Broker anzeigen.
XenDesktop Broker Version 6.x¶
Öffne eine PowerShell-Eingabeaufforderung auf dem Desktop-Broker.
Gib den folgenden Befehl ein:
Add-PSSnapin Citrix.Broker.Admin.V1
Du solltest keine Fehlermeldung erhalten. Du kannst den folgenden Befehl ausprobieren, um zu sehen, ob alles funktioniert:
Get-BrokerSession
Dies sollte eine Liste mit allen offenen Sitzungen auf diesem Desktop-Broker anzeigen.
XenApp Server Version 6.x¶
Öffne eine PowerShell-Eingabeaufforderung auf dem XenApp-Server.
Gib den folgenden Befehl ein:
Add-PSSnapin Citrix.XenApp.Commands
Du solltest keine Fehlermeldung erhalten. Du kannst den folgenden Befehl ausprobieren, um zu sehen, ob alles funktioniert:
Get-XASession
Dies sollte eine Liste mit allen offenen Sitzungen auf diesem XenApp-Server anzeigen.
Funktionsprinzip¶
Die XenData-Erweiterung agiert als Adapter. Anstatt eigene Benutzer- oder Computerobjekte im Raptor-System zu erstellen, fügt sie Xen-Daten zu bestehenden Objekten aus dem Active Directory hinzu. Aus diesem Grund werden Xen-Daten nur bei Objekten angezeigt, die vom Active Directory-Server bereitgestellt und mit der Active Directory-Erweiterung verwendet werden.
In diesem Abschnitt erklären wir, wie die XenData-Erweiterung funktioniert, sodass du ein besseres Verständnis für die Konfiguration der Erweiterung erhältst.
Grundlagen: Die Struktur eines Raptor-Objekts¶
Jedes Objekt in Raptor besteht aus mehreren Elementen, die in der folgenden Abbildung dargestellt sind. Es enthält einen eindeutigen Objekt-Locator, der sich aus dem Objekttyp, dem Objektnamen und dem Objektkontext zusammensetzt. Üblicherweise entspricht der Kontext in einer Windows-Umgebung dem Domain-Namen.
Ein Objekt kann mehrere Informationsblöcke enthalten, die die eigentlichen Daten des Objekts beinhalten. Jeder Informationsblock hat eine eindeutige Kennung. Die Informationsblöcke werden von Datenquellen im Raptor-System hinzugefügt. In der Illustration wurden die beiden gezeigten Informationsblöcke von der Active Directory-Erweiterung hinzugefügt.
Details zu Informationsblöcken¶
Die folgende Abbildung zeigt die Elemente eines Raptor-Objekts. Jedes Objekt kann mehrere Informationsblöcke enthalten. Jeder Informationsblock ist mit einem Schema verknüpft. Das Schema legt alle Felder fest, die ein Informationsblock bereitstellt, ohne jedoch Werte für diese Felder anzugeben. In der Abbildung erkennst du auch einen Bereich, der als „Values“ bezeichnet wird und die tatsächlichen Werte des Blocks darstellt.
Es ist möglich, dass mehrere Blöcke dasselbe Schema verwenden, wenn sie dieselben Felddefinitionen bereitstellen. Ob die Schemata lediglich ähnlich sind oder ob das gleiche Schema gemeinsam genutzt wird, macht für das Raptor-System keinen Unterschied.
Aufbau eines Informationsblockschemas¶
In der folgenden Abbildung findest du ein Beispiel für ein Informationsblockschema, das als Tabelle dargestellt ist.
Ein solches Schema definiert eine beliebige Anzahl von Feldern. Jedes Feld hat eine eindeutige Kennung, die in der Spalte „Identifier“ zu finden ist und innerhalb desselben Informationsblocks einzigartig sein muss. Das Label, das du in der Spalte „Label“ siehst, wird im Raptor-Client angezeigt.
Jedes Feld hat außerdem einen Typ, den du in der Spalte „Type“ erkennen kannst. Dieser definiert das Format des im Client angezeigten Werts. Die XenData-Erweiterung arbeitet nur mit dem Tabellentyp, der den Wert als Tabelle darstellt.
Der Text in der Spalte „Section“ bestimmt den Abschnitt, in dem der Wert angezeigt wird. Alle Werte der XenData-Erweiterung erscheinen in einem eigenen Abschnitt mit der Kennung XenData
. Dieser Abschnitt wird im Client als „Xen Data“ bezeichnet.
Die letzte Spalte „Order Index“ steuert die Reihenfolge der Felder im Abschnitt. Dabei handelt es sich um eine Zahl zwischen eins und 1000. Der Client sortiert die Felder nach dieser Zahl, beginnend mit dem niedrigsten Wert.
Trennung der Werte vom Schema¶
Es gibt gute Gründe dafür, die tatsächlichen Werte von den Schemas zu trennen. In Raptor müssen nicht alle Werte eines Informationsblocks sofort verfügbar sein. Informationen können später abgerufen oder ungültig werden, aber der Client sollte dennoch wissen, welche Werte verfügbar sind, selbst wenn sie zu einem späteren Zeitpunkt abgerufen werden. Der Client nutzt das Schema, um das Layout der Objektseite vorzubereiten, alle Felder den passenden Abschnitten zuzuordnen und die Abschnitte sowie die Felder innerhalb der Abschnitte zu sortieren. Dies ist nur möglich, wenn die Bezeichnungen, Typen und Positionen aller Felder im Voraus bekannt sind.
Der Informationsblock im Detail¶
Die folgende Abbildung zeigt ein Beispiel für Details, die in jedem Informationsblock gespeichert sind. Es gibt eine eindeutige Kennung, die innerhalb des Objekts eindeutig sein muss. Zudem gibt es einen Modus, der bestimmt, wann die Werte des Blocks aktualisiert werden.
Der einfachste Modus ist Permanent
, was bedeutet, dass die Werte von Anfang an verfügbar sind und bei Bedarf in regelmäßigen Abständen aktualisiert werden. Das Feld „Letzte Aktualisierung“ zeigt dem Client, ob seit der letzten Aktualisierung neue Werte vorhanden sind. Das Feld „Ablaufzeit“ wird in diesem Modus nicht verwendet.
Die XenData-Erweiterung verwendet den Modus OnRequestAutomatic
. In diesem Modus sind zunächst keine Werte im Informationsblock gespeichert. Sobald ein Client das Objekt anfordert, das diesen Informationsblock enthält, werden die Werte von der Erweiterung angefordert. Das Feld „Letzte Aktualisierung“ wird auf die Zeit gesetzt, zu der die Informationen abgerufen wurden, und die Ablaufzeit steuert, zu welchem Zeitpunkt der Client die Informationen erneut anfordern muss. Details zu diesem Vorgang werden später erklärt.
Der Modus OnRequestByUser
ruft die Werte nur ab, wenn du im Client explizit auf den Link „Daten anfordern“ klickst. Dieser Modus ist für Informationen reserviert, deren Abruf zeitaufwendig ist.
Außerdem wird die Quelle der im Block gespeicherten Informationen angegeben, um sicherzustellen, dass Informationen von der richtigen Erweiterung angefordert werden.
Der Status verfolgt lediglich, ob im Block verwendbare Werte vorhanden sind oder ob die Werte gerade angefordert werden. In unserem Beispiel bedeutet der Status „Complete“, dass alle Werte verfügbar und gültig sind.
Vom Objekt zur Anzeige im Client¶
Wir haben alle grundlegenden Informationen behandelt, die erforderlich sind, um zu verstehen, wie der Raptor-Server die Informationen intern speichert und verarbeitet. Bevor die tatsächlichen Werte im Client angezeigt werden, gibt es einige Verarbeitungsschritte, die ich in den nächsten Abschnitten erklären werde.
Eine andere Sicht auf das Objekt¶
Die Werte, die in den Informationsblöcken eines Objekts gespeichert sind, sind nicht immer in einem geeigneten Format für die Anzeige im Client. Daher kann jedes Schema auch einen Mechanismus namens Ansicht (view) bereitstellen. Die Ansicht konvertiert die Rohdaten aus dem Informationsblock in ein für die Anzeige im Client geeignetes Format.
In der folgenden Abbildung ist dieser Prozess dargestellt. Das Raptor-System speichert nur die Rohdaten, um den Speicherverbrauch so gering wie möglich zu halten. Wenn du diese Daten anforderst, werden sie von der Darstellungsschicht („Object View“) verarbeitet und in Daten für die Anzeige konvertiert. Die Xen Data-Erweiterung fügt beispielsweise Aktionen zu den Zeilen hinzu und erstellt Links aus bestimmten Feldwerten. Außerdem ordnet sie die Spalten gemäß der Konfiguration neu an und filtert unerwünschte Inhalte aus den Tabellen.
Der vollständige Anfragezyklus¶
Wie bereits erwähnt, stellt die Xen Data-Erweiterung keine permanenten Daten bereit, sondern ruft die Daten ab, wenn du ein bestimmtes Objekt mit dem Raptor-Client öffnest.
Die folgende Abbildung zeigt den gesamten Anfragezyklus. Es beginnt auf der linken Seite, ausgehend von dir, der die Detailseite eines Objekts im Raptor-Client öffnet. Der Raptor-Client fordert die Objektdetails vom Raptor-Server an. Bitte folge den grünen Pfeilen für die Anfrage.
In unserem Fall wurden die Objektdaten zuvor nicht abgerufen, der Informationsblock (oder die Blöcke) enthält nicht die tatsächlichen Werte. Der Objektmanager im Raptor-System erkennt den Informationsmangel und sendet eine Anfrage an die Quelle der Daten, in unserem Fall die Xen Data-Erweiterung. Die Erweiterung verwendet den PowerShell-Dienst, um die Daten abzurufen, der die Citrix APIs verwendet, um die angeforderten Informationen abzurufen.
Von dort werden die tatsächlichen Informationen zurückgesendet. Bitte folge den orangefarbenen Pfeilen, um die Antwort zu sehen. Der PowerShell-Dienst gibt die Informationen an die Xen Data-Erweiterung weiter. Die Erweiterung sendet diese Informationen zurück an den Objektmanager, der die Daten von der Erweiterung angefordert hat. Die an den Objektmanager gesendeten Werte haben eine Ablaufzeit, wie im Abschnitt Details zu Informationsblöcken beschrieben. Die neuen Werte werden von der Ansicht verarbeitet und an den Client zurückgesendet, der die Werte als Tabellen anzeigt.
Wenn der Objektmanager bereits gültige Werte hat, die noch nicht abgelaufen sind, werden diese Werte stattdessen zurückgegeben. In diesem Fall wird keine Anfrage an die Xen Data-Erweiterung gesendet.
Die Arbeitsweise als Adapter¶
Als Adapter durchsucht die XenData-Erweiterung den Objekt-Feed nach neuen Objekten. Sieh dir die folgende Abbildung an, um diesen Prozess zu visualisieren. Der Objekt-Feed ist eine Art Warteschlange, in der alle Operationen in der internen Datenbank für Adapter zur Überprüfung veröffentlicht werden.
Die XenData-Erweiterung überprüft alle neuen Objekte, ob sie einen Informationsblock von der Active Directory-Erweiterung enthalten und ob der Kontext einer der konfigurierten Zuordnungen entspricht.
Beispiel¶
Sieh dir die folgende Liste für eine einfache Kontextzuordnung an. Sie hat zwei Einträge für zwei verschiedene Kontexte zur Zuordnung.
1<List name="ContextMappings">
2 <ListEntry>
3 <Value name="SourceContext">
4 educateit
5 educateit.intra
6 </Value>
7 <Value name="LinkNames">
8 Link1
9 </Value>
10 <Value name="Domain">educateit</Value>
11 </ListEntry>
12 <ListEntry>
13 <Value name="SourceContext">
14 examplex
15 </Value>
16 <Value name="LinkNames">
17 Link2
18 </Value>
19 <Value name="Domain">example</Value>
20 </ListEntry>
21</List>
Die XenData-Erweiterung überprüft jedes Objekt, ob es einen Informationsblock von der Active Directory-Erweiterung enthält. Wenn ein Informationsblock mit der Kennung ActiveDirectory
vorhanden ist, wird der Kontext des Objekts überprüft.
Der Kontext wird mit allen Kontextkennungen verglichen, die in den SourceContext
-Werten in der Konfiguration angegeben sind. Wenn einer dieser Kontexte übereinstimmt, fügt die Erweiterung ihren eigenen Informationsblock dem Objekt hinzu. Mehr dazu im nächsten Abschnitt.
Im oben gezeigten Fall sind beide Bedingungen erfüllt. Es gibt einen Informationsblock ActiveDirectory
, und der Kontext educateit
stimmt mit dem Kontext in der ersten Zuordnung in der obigen Liste überein.
Wenn die Überprüfung fehlschlägt, wird das Objekt einfach ignoriert. Ein Objekt zu ignorieren bedeutet, dass die Erweiterung dem Objekt keinen eigenen Informationsblock hinzufügt. Daher werden im Client keine Xen-bezogenen Daten für das Objekt angezeigt.
Ein Informationsblock wird hinzugefügt¶
Wenn eine Zuordnung übereinstimmt, fügt die Erweiterung für jeden Link einen Informationsblock zum Objekt hinzu. Sieh dir die folgende Abbildung an, um diesen Prozess zu visualisieren.
Dieser Informationsblock wird auf den „on demand“-Modus gesetzt, was bedeutet, dass die tatsächlichen Daten abgerufen werden, sobald der Client das Objekt anfordert. Daher enthält der hinzugefügte Informationsblock nur die Felder und Typen, aber keine Werte.
Wenn eine Zuordnung mehrere Links zu verschiedenen Servern und Xen-Versionen hat, wird dem Objekt ein separater Informationsblock für jeden Link hinzugefügt. Die Reihenfolge der Informationsblöcke spielt keine Rolle, nur der Ordnungsindex für jeden Wert. Jeder Wert stellt eine ganze Tabelle im Client dar, und der Client zeigt alle Tabellen in der konfigurierten Reihenfolge an.
Die Informationen anzeigen¶
Das Anzeigen des Objekts im Raptor-Client löst automatisch eine Anfrage aus, um die Daten für das Objekt abzurufen. Die XenData-Erweiterung fordert die Daten vom Backend an und stellt die Werte für alle hinzugefügten Informationsblöcke bereit.
Konfiguration¶
Das Konfigurationsschema¶
Module
XenData
List
Complex list definition
Must not be empty.
Must match this regular expression:
[-_a-z0-9]+
Maximum length:
128
Must not be empty.
Must be one of this:
7.5
,7.5App
,7.5Desktop
,6App
,6Desktop
Must match this regular expression:
[-a-z0-9:._]+
Must match this regular expression:
[-a-z0-9_.,;:@\\/]+
List
Complex list definition
Must not be empty.
Must not have duplicates.
Must not be empty.
Must match this regular expression:
[-_a-z0-9]{1,128}
Must not have duplicates.
Must not be empty.
Must match this regular expression:
[-_a-z0-9.]+
List
Complex list definition
Must match this regular expression:
[-_a-z0-9]+
Must be one of this:
7.5
,7.5App
,7.5Desktop
,6App
,6Desktop
Must be one of this:
Session
,Desktop
,Resource
,Process
Must not be empty.
List
Complex list definition
Must not be empty.
Maximum length:
64
Must match this regular expression:
[^[:cntrl:]]+
Must be one of this:
Session
,Desktop
,Resource
,Process
Must not have duplicates.
Must be one of this:
7.5
,7.5App
,7.5Desktop
,6App
,6Desktop
Must not have duplicates.
Default Value:
No
Default Value:
No
Complex list definition
Must not be empty.
Must not have duplicates.
Must be one of this:
Session
,Desktop
,Resource
,Process
Must not be empty.
Must not have duplicates.
Must be one of this:
7.5
,7.5App
,7.5Desktop
,6App
,6Desktop
Must not be empty.
Maximum length:
64
Must match this regular expression:
[^[:cntrl:]]+
Complex list definition
Must not be empty.
Maximum length:
64
Must match this regular expression:
[a-z0-9]+
Must be one of this:
All
,Session
,Desktop
,Resource
,Process
Default Value:
All
Must not be empty.
Maximum length:
64
Must match this regular expression:
[^[:cntrl:]]+
Default Value:
No
Der Wert PsServicePort
¶
Mit dem optionale Wert PsServicePort
kannst du den Port für die Verbindung zum PowerShell-Dienst auf dem lokalen Host anzupassen. Wenn du diesen Wert nicht angibst, wird der Standardport 17691
verwendet.
Wir empfehlen, den Standardport beizubehalten und diesen Wert wegzulassen, es sei denn, es gibt einen Konflikt und der PowerShell-Dienst muss auf einem anderen Port betrieben werden.
Beispiel:
<Module name="XenData">
...
<Value name="PsServicePort">12345</Value>
...
</Module>
Die Liste Links
¶
Diese Liste beinhaltet alle sogenannten Links, das heißt Verbindungen zu XenApp- und XenDesktop-Servern im Netzwerk. Jeder Link benötigt einen eindeutigen Namen, der später in der Konfiguration genutzt wird, um auf diesen Link zu verweisen.
Der Wert Name
¶
Mit dem Wert Name
legst du den eindeutigen Namen des Links fest. Dieser Name wird in den Kontext-Mappings verwendet, um auf einen bestimmten Link zu verweisen. Der Name darf nicht länger als 128 Zeichen sein und nur Buchstaben, Zahlen, Bindestriche „-“ und Unterstriche „_“ enthalten.
Beispiel:
1<Module name="XenData">
2 <List name="Links">
3 <ListEntry>
4 <Value name="Name">LinkA75</Value>
5 <Value name="Version">7.5</Value>
6 <Value name="RemoteUsername">Administrator</Value>
7 <Value name="RemotePassword">***</Value>
8 </ListEntry>
9 ...
10 </List>
11 ...
12</Module>
Der Wert Version
¶
Mit dem Wert Version
steuerst du die Version und den Typ des Xen-Servers. Dieser Wert muss dem Zielserver entsprechen. Es gibt eine Reihe von möglichen Optionen.
Wert |
Beschreibung |
---|---|
|
Der Link verbindet sich mit einem XenApp-Server der Version 6.x. |
|
Der Link verbindet sich mit einem XenDesktop-Broker der Version 6.x. |
|
Der Link verbindet sich mit einem kombinierten XenApp- und XenDesktop-Broker der Version 7.5. |
|
Verwende diese speziellen Werte, um dich mit einer geteilten Version 7.5 System zu verbinden, bei dem der XenDesktop-Broker und das XenApp-System auf zwei verschiedene Systeme aufgeteilt sind. |
Beispiel:
1<Module name="XenData">
2 <List name="Links">
3 <ListEntry>
4 <Value name="Name">LinkA75</Value>
5 <Value name="Version">7.5</Value>
6 <Value name="RemoteUsername">Administrator</Value>
7 <Value name="RemotePassword">***</Value>
8 </ListEntry>
9 ...
10 </List>
11 ...
12</Module>
Der Wert RemoteUsername
¶
Mit dem Wert RemoteUsername
gibst du den Benutzernamen an, der für die Verbindung zum Xen-Remote-Server benötigt wird. Wenn du dabei Domänengrenzen überschreitest, vergiss nicht, die neue Domäne mithilfe des Backslash-Zeichens (\
) einzufügen.
Beispiel:
1<Module name="XenData">
2 <List name="Links">
3 <ListEntry>
4 <Value name="Name">LinkA75</Value>
5 <Value name="Version">7.5</Value>
6 <Value name="RemoteUsername">Administrator</Value>
7 <Value name="RemotePassword">***</Value>
8 </ListEntry>
9 ...
10 </List>
11 ...
12</Module>
Der Wert RemotePassword
¶
Mit dem Wert RemotePassword
legst du das Passwort für die Verbindung zum Xen-Remote-Server fest. Achte darauf, das Passwort mithilfe des Passwort-Encoder-Tools zu verschlüsseln, bevor du es in die Konfiguration einfügst. Speichere niemals Passwörter im Klartext.
Beispiel:
1<Module name="XenData">
2 <List name="Links">
3 <ListEntry>
4 <Value name="Name">LinkA75</Value>
5 <Value name="Version">7.5</Value>
6 <Value name="RemoteUsername">Administrator</Value>
7 <Value name="RemotePassword">***</Value>
8 </ListEntry>
9 ...
10 </List>
11 ...
12</Module>
… _ext-xd-contextmappings:
Die Liste ContextMappings
¶
In der Liste ContextMappings
werden Kontextzuordnungen definiert. Jede Kontextzuordnung wählt einen oder mehrere Links aus, um Xen-Daten für bestimmte Objektkontextnamen abzurufen. Achte darauf, dass alle Kontextnamen einer Zuordnung in derselben Domäne liegen.
Der Wert SourceContext
¶
Der Wert SourceContext
enthält eine Liste von Objektkontextnamen. Wenn einer dieser Kontextnamen mit dem Objektkontext übereinstimmt, wird die entsprechende Zuordnung für das Objekt ausgewählt.
In dieser Liste sind die Kontextnamen durch Leerzeichen getrennt und die Groß- und Kleinschreibung wird nicht beachtet. Jeder Kontext darf nur einmal in der gesamten Liste der Kontextzuordnungen vorkommen.
Falls kein Kontext aus einer Zuordnung übereinstimmt, fügt die Erweiterung dem Objekt keinen Xen-Datenabschnitt hinzu.
Beispiel:
1<Module name="XenData">
2 <List name="ContextMappings">
3 <ListEntry>
4 <Value name="SourceContext">
5 educateit
6 educateit.intra
7 </Value>
8 <Value name="LinkNames">
9 LinkA75
10 LinkA6App
11 </Value>
12 <Value name="Domain">educateit</Value>
13 </ListEntry>
14 ...
15 </List>
16 ...
17</Module>
Der Wert LinkNames
¶
Der Wert LinkNames
beinhaltet eine durch Leerzeichen getrennte Liste von Linknamen. Jeder Linkname repräsentiert eine Datenquelle für den angegebenen Kontext. Wenn du mehrere Links angibst, stelle sicher, dass jeder Link eine unterschiedliche Version aufweist.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="ContextMappings">
4 <ListEntry>
5 <Value name="SourceContext">
6 educateit
7 educateit.intra
8 </Value>
9 <Value name="LinkNames">
10 LinkA75
11 LinkA6App
12 </Value>
13 <Value name="Domain">educateit</Value>
14 </ListEntry>
15 </List>
16 ...
17</Module>
Der Wert Domain
¶
Der Wert Domain
ist ein erforderlicher Wert, der den Domänennamen für diese Zuordnung angibt. Verwende hier den kurzen Domänennamen, der auch als Präfix für Benutzernamen dient.
Beachte, dass die Kontextnamen je nach Konfiguration von dem regulären Domänennamen deines Netzwerks abweichen können. Dieser Wert stellt den korrekten Domänennamen fest, der für alle Anfragen genutzt wird.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="ContextMappings">
4 <ListEntry>
5 <Value name="SourceContext">
6 educateit
7 educateit.intra
8 </Value>
9 <Value name="LinkNames">
10 LinkA75
11 LinkA6App
12 </Value>
13 <Value name="Domain">educateit</Value>
14 </ListEntry>
15 ...
16 </List>
17 ...
18</Module>
Die Liste TableConfiguration
¶
Mit der Liste TableConfiguration
konfigurierst und aktivierst du die im Raptor Client sichtbaren Tabellen. Jeder Eintrag aktiviert und konfiguriert eine einzelne Tabelle und ihre Felder. Nicht konfigurierte Tabellen sind im Client unsichtbar. Daher musst du jede Tabelle konfigurieren, die im Client angezeigt werden soll.
Die Werte LinkName
, ObjectType
und LinkVersion
sind optional und schränken die Konfiguration auf die angegebenen Attribute ein. Wenn du einen Linknamen angibst, wird die Konfiguration nur auf Tabellen für diesen spezifischen Linknamen angewendet. Gibst du eine Linkversion an, wird die Konfiguration nur auf Tabellen von Links mit der angegebenen Version angewendet. Wenn du einen Linknamen und eine Linkversion angibst, wird die Konfiguration auf Tabellen beschränkt, die beide Attribute erfüllen.
Der Wert LinkName
¶
Der optionale Wert LinkName
schränkt die Tabellenkonfiguration auf Tabellen ein, die vom angegebenen Linknamen stammen.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="LinkName">LinkA75</Value>
6 <Value name="LinkVersion">7.5</Value>
7 <Value name="TableIdentifier">Desktop</Value>
8 <Value name="Fields">
9 AssociatedUserNames
10 MachineName
11 SessionUserName
12 SummaryState
13 </Value>
14 <List name="Actions" />
15 </ListEntry>
16 ...
17 </List>
18 ...
19</Module>
Der Wert LinkVersion
¶
Der optionale Wert LinkVersion
schränkt die Tabellenkonfiguration auf Tabellen von Links mit der angegebenen Version ein.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="LinkName">LinkA75</Value>
6 <Value name="LinkVersion">7.5</Value>
7 <Value name="TableIdentifier">Desktop</Value>
8 <Value name="Fields">
9 AssociatedUserNames
10 MachineName
11 SessionUserName
12 SummaryState
13 </Value>
14 <List name="Actions" />
15 </ListEntry>
16 ...
17 </List>
18 ...
19</Module>
Der Wert ObjectType
¶
Mit dem optionalen Wert ObjectType
kannst du eine Tabelle auf den angegebenen Objekttyp beschränken. Das ist nützlich, um eine bestimmte Tabelle nur für einen Objekttyp zu aktivieren und sie für andere Objekttypen auszublenden.
Die Beispielkonfiguration definiert eine Tabelle für den Objekttyp User
durch den Wert ObjectType
. Hierbei wird die Tabelle mit dem Identifikator „Desktop“ nur für Benutzerobjekte sichtbar und für andere Objekttypen ausgeblendet. Diese Tabelle ist auf Links mit dem Namen „LinkA75“ und der Version „7.5“ beschränkt. Sie zeigt die Felder AssociatedUserNames
, MachineName
, SessionUserName
und SummaryState
an und bietet somit eine benutzerspezifische Ansicht mit relevanten Informationen zu den Desktops, wie zugeordnete Benutzernamen, Maschinennamen, Benutzernamen der aktuellen Sitzung und den Status.
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="LinkName">LinkA75</Value>
6 <Value name="LinkVersion">7.5</Value>
7 <Value name="ObjectType">User</Value>
8 <Value name="TableIdentifier">Desktop</Value>
9 <Value name="Fields">
10 AssociatedUserNames
11 MachineName
12 SessionUserName
13 SummaryState
14 </Value>
15 <List name="Actions" />
16 </ListEntry>
17 ...
18 </List>
19 ...
20</Module>
Der Wert TableIdentifier
¶
Mit dem Wert TableIdentifier
legst du fest, welche Tabelle du konfigurieren möchtest. Die erlaubten Werte sind Session
, Desktop
und Process
. So bestimmst du genau, welche Tabelle angepasst wird und welche Informationen sie anzeigen soll.
Im Beispiel unten wird die Tabelle mit dem Bezeichner Session
konfiguriert. Dadurch werden in dieser Tabelle Informationen wie zugeordnete Benutzernamen, Maschinennamen, Sitzungsbenutzernamen und der Status dargestellt.
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Session</Value>
6 <Value name="Fields">
7 AssociatedUserNames
8 MachineName
9 SessionUserName
10 SummaryState
11 </Value>
12 <List name="Actions" />
13 </ListEntry>
14 ...
15 </List>
16 ...
17</Module>
Der Wert Fields
¶
Mit dem Wert Fields
legst du fest, welche Felder in der Tabelle angezeigt werden sollen. Gib dafür eine Liste von Feldnamen an, getrennt durch Leerzeichen. Die Felder werden in der angegebenen Reihenfolge dargestellt. Im Beispiel unten siehst du, wie die Felder MachineName
, SessionUserName
und SummaryState
in dieser Reihenfolge konfiguriert werden:
<Value name="Fields">
MachineName
SessionUserName
SummaryState
</Value>
Um ein Feld auszublenden, aber dennoch für Expertensystem-Skripte oder Aktionen verfügbar zu halten, füge einfach ein Minuszeichen (-
) vor dem Feldnamen hinzu. Im folgenden Beispiel sind die Felder SessionUserName
und SummaryState
sichtbar, während MachineName
ausgeblendet bleibt:
<Value name="Fields">
-MachineName
SessionUserName
SummaryState
</Value>
Für eine Übersicht über alle verfügbaren Felder in den Tabellen, schau dir die Abschnitte Session-Felder, Desktop-Felder und Prozess-Felder an.
Das spezielle Feld Action
¶
Es gibt einen speziellen Feldnamen Action
, der die Spalte mit den Aktionen an der angegebenen Position anzeigt. Das Feld Action
darf kein Präfix oder Suffix haben. Das folgende Beispiel zeigt die Aktions-Spalte als letzte Spalte dieser Tabelle:
<Value name="Fields">
MachineName
SessionUserName
Action
</Value>
Mit dem Suffix $
fügst du das Feld als Parameter für jede Aktion in dieser Zeile hinzu. Das folgende Beispiel fügt die Felder MachineName
und SessionUserName
als Parameter für jede Aktion hinzu:
<Value name="Fields">
MachineName$
SessionUserName$
Action
</Value>
Du kannst das Präfix -
mit dem Suffix $
kombinieren, um ein ausgeblendetes Feld hinzuzufügen, das als Parameter für jede Aktion hinzugefügt wird. Im folgenden Beispiel wird das Feld MachineName
in der Tabelle ausgeblendet, aber als Parameter für jede Aktion hinzugefügt.
<Value name="Fields">
-MachineName$
SessionUserName$
Action
</Value>
Du kannst auch den Namen des Parameters neu definieren, indem du den neuen Namen nach dem $
-Zeichen hinzufügst. Das folgende Beispiel fügt das Feld MachineName
als Parameter machine
und das Feld SessionUserName
als username
für jede Aktion hinzu:
<Value name="Fields">
MachineName$machine
SessionUserName$username
Action
</Value>
Das besondere Feld LinkName
¶
Ein weiteres besonderes Feld ist LinkName
, das immer den Namen des Links enthält, der die Datenquelle für die Zeile in der Tabelle war. Es funktioniert mit allen Tabellen und lässt sich mit dem -
-Präfix und dem $
-Suffix kombinieren.
Dieses Feld wurde hinzugefügt, um aufgerufenen Skripten die Möglichkeit zu geben, je nach Datenquelle ein unterschiedliches Verhalten zu implementieren.
Die Liste Actions
¶
Wenn du ein Action
-Feld zur Tabelle hinzufügst, solltest du mindestens eine Aktion in der Liste der Aktionen bereitstellen.
Jeder Eintrag in dieser Liste wird als Aktionsbutton in der Aktions-Spalte der Tabelle angezeigt.
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Session</Value>
6 ...
7 <List name="Actions">
8 ...
9 </List>
10 </ListEntry>
11 ...
12 </List>
13 ...
14</Module>
Der Wert Label
¶
Mit dem Wert Label
legst du den Text fest, der auf dem Aktionsbutton erscheint. Die maximale Länge beträgt 64 Zeichen, doch es empfiehlt sich, den Text möglichst kurz und prägnant zu gestalten.
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Session</Value>
6 ...
7 <List name="Actions">
8 <Value name="Label">Example</Value>
9 <Value name="Arguments">
10 profile=Example
11 </Value>
12 </List>
13 </ListEntry>
14 ...
15 </List>
16 ...
17</Module>
Der Wert Arguments
¶
Mit dem Wert Arguments
legst du zusätzliche Argumente fest, die neben den Argumenten aus der Tabellenzeile stets an das Programm übergeben werden. Die Formatierung dieses Eintrags ist wie im folgenden Beispiel dargestellt:
<Value name="Arguments">
arg1=value1
arg2=value2
arg3=value3
</Value>
Hierbei handelt es sich um eine durch Leerzeichen getrennte Liste von Parametern. Jeder Parameter besteht aus einem Parameternamen und einem Parameterwert, die durch ein Gleichheitszeichen (=
) voneinander getrennt sind. In jeder Parameterdefinition dürfen keine Leerzeichen vorkommen.
Der Parametername kann die Buchstaben a-z
und die Ziffern 0-9
enthalten, ab dem zweiten Zeichen sind auch Bindestriche (-
) zulässig. Der Wert nach dem =
darf weder Leerzeichen noch ein =
Zeichen enthalten.
Diese Argumente sind optional, aber wenn keine Argumente benötigt werden, muss ein leerer Wert angegeben werden.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Session</Value>
6 ...
7 <List name="Actions">
8 <Value name="Label">Beispiel</Value>
9 <Value name="Arguments">
10 profile=Beispiel
11 </Value>
12 </List>
13 </ListEntry>
14 ...
15 </List>
16 ...
17</Module>
Der Wert ProgramPath
¶
Mit dem optionalen Wert ProgramPath
legst du ein alternatives auszuführendes Programm für die angegebene Aktion fest. Wenn du diesen Wert weglässt, wird das standardmäßige Aktionsprogramm verwendet, das im Data
-Modul der Raptor-Konfiguration konfiguriert ist.
Du musst einen absoluten Pfad zum Programm angeben, und dieser Wert darf nur der Programmpfad ohne Anführungszeichen oder zusätzliche Argumente sein. Gib Argumente stattdessen mit dem Wert Arguments
an.
Beispiel:
1<Module name="XenData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Session</Value>
6 ...
7 <List name="Actions">
8 <Value name="Label">Beispiel</Value>
9 <Value name="Arguments">
10 profile=Beispiel
11 </Value>
12 <Value name="ProgramPath">C:\Programme\Beispiel\Beispiel.exe</Value>
13 </List>
14 </ListEntry>
15 ...
16 </List>
17 ...
18</Module>
Der Wert TableOrder
¶
Mit dem Wert TableOrder
legst du die Anzeigereihenfolge der Tabellen im Client fest. Je nach Einstellung der VersionOrderFirst
-Option bestimmt dieser Wert die erste oder zweite Reihenfolge der Tabellen.
Um die Reihenfolge festzulegen, gib einfach die gewünschten Tabellenwerte in einer durch Leerzeichen getrennten Liste an. Die möglichen Tabellenwerte sind:
Session
Desktop
Resource
Process
Wenn du einen Wert weglässt, bleibt die Reihenfolge dieser Tabelle undefiniert und sie wird hinter den definierten Tabellen angezeigt. Ein Beispiel für eine gültige Konfiguration findest du hier:
<Module name="XenData">
...
<Value name="TableOrder">
Session
Desktop
Process
</Value>
...
</Module>
Der Wert VersionOrder
¶
Mit dem Wert VersionOrder
bestimmst du die Anzeigereihenfolge der verschiedenen Tabellenversionen im Client. Je nach Einstellung der VersionOrderFirst
-Option beeinflusst dieser Wert die erste oder zweite Reihenfolge der Tabellen.
Um die Reihenfolge festzulegen, gib die gewünschten Versionswerte in einer durch Leerzeichen getrennten Liste an. Die möglichen Versionswerte sind:
7.5
7.5App
7.5Desktop
6App
6Desktop
Wenn du einen Wert weglässt, bleibt die Reihenfolge dieser Version undefiniert und sie wird hinter den definierten Versionen angezeigt. Ein Beispiel für eine gültige Konfiguration findest du hier:
<Module name="XenData">
...
<Value name="VersionOrder">
7.5
6App
6Desktop
</Value>
...
</Module>
Der Wert VersionOrderFirst
¶
Dieser Wert steuert, ob die Tabellen zuerst nach Tabellentyp oder nach Version sortiert werden sollen. Wenn du diesen Wert auf Yes
setzt, werden die Tabellen zuerst nach Version sortiert, wie im folgenden Beispiel gezeigt:
Session 7
Process 7
Session 6
Process 6
Wenn du diesen Wert auf No
setzt, werden die Tabellen zuerst nach Typ sortiert, wie im folgenden Beispiel gezeigt:
Session 7
Session 6
Process 7
Process 6
<Module name="XenData">
...
<Value name="VersionOrderFirst">No</Value>
...
</Module>
Der Wert ShowTableVersion
¶
Diese Flagge steuert, ob die Version der Tabelle zum Tabellennamen hinzugefügt werden soll. Wenn du Tabellen aus verschiedenen Versionen von Citrix-Systemen mischst, solltest du diese Flagge aktivieren.
<Module name="XenData">
...
<Value name="ShowTableVersion">Yes</Value>
...
</Module>
Die Liste CustomValueLabel
¶
Diese optionale Liste kann benutzerdefinierte Beschriftungen für die im Client angezeigten Tabellen definieren. Wenn du diesen Tabellenwert weglässt, werden die Tabellen wie in diesem Dokument beschrieben benannt.
Siehe die folgende Abbildung, die die Beschriftungen zeigt, die du mit dieser Konfigurationsliste ändern kannst. Die betroffenen Beschriftungen sind mit A markiert. Im folgenden Beispiel wurde die erste Beschriftung mit einem neuen Text überschrieben, indem die folgende Beispielkonfiguration verwendet wurde.
Beispiel¶
Im folgenden Listing findest du ein Beispiel, wie einige Beschriftungen mit einem neuen Text überschrieben werden. In diesem Beispiel werden nur die Beschriftungen der Sitzungstabellen überschrieben.
<List name="CustomValueLabel">
<ListEntry>
<Value name="Table">Session</Value>
<Value name="Version">7.5 7.5App 7.5Desktop</Value>
<Value name="Label">7-Session</Value>
</ListEntry>
<ListEntry>
<Value name="Table">Session</Value>
<Value name="Version">6App 6Desktop</Value>
<Value name="Label">6-Session</Value>
</ListEntry>
</List>
Die Tabelle¶
Jeder Eintrag in der Tabelle überschreibt die Beschriftung einer oder mehrerer Tabellen, die den angegebenen Kriterien entsprechen. Wenn eine Tabelle keinem der Kriterien deiner Einträge in der Liste entspricht, wird die Standardbeschriftung verwendet.
Das Kriterium ist eine Liste von Tabellen- und Versionskennungen. Wenn eine Tabelle einer der Tabellenkennungen und einer der Versionskennungen entspricht, wird die angegebene Beschriftung verwendet. Alle deine Einträge werden in der Reihenfolge überprüft, in der du sie definiert hast.
Der Wert Table
¶
Dies ist eine durch Leerzeichen getrennte Liste von Tabellenkennungen, von denen mindestens eine übereinstimmen muss, damit der neue Text im Wert Label
angewendet wird. Du musst mindestens eine Tabellenkennung aus der folgenden Liste angeben:
Session
Desktop
Resource
Process
Der Wert Version
¶
Dies ist eine durch Leerzeichen getrennte Liste von Versionskennungen, von denen mindestens eine übereinstimmen muss, damit der neue Text im Wert Label
angewendet wird. Du musst mindestens eine Versionskennung aus der folgenden Liste angeben:
7.5
7.5App
7.5Desktop
6App
6Desktop
Der Wert Label
¶
Dies ist das Label, das verwendet wird, um das Standard-Label zu überschreiben. Du solltest es kurz halten und Sonderzeichen vermeiden. Es gibt drei Platzhalter, die du im Label verwenden kannst.
Platzhalter |
Beschreibung |
---|---|
|
Dieser Platzhalter wird durch die Tabellenkennung ersetzt. |
|
Dieser Platzhalter wird durch die Versionskennung ersetzt. |
|
Dieser Platzhalter wird durch eine kurze Version der Versionskennung ersetzt. Es handelt sich dabei nur um die erste Ziffer der Versionskennung. |
Die Liste CustomColumnTitle
¶
Mit der Liste CustomColumnTitle
kannst du die Spaltentitel aller Tabellen anpassen. Jeder Eintrag in dieser Liste definiert den Titel für ein einzelnes Feld für alle Tabellen oder nur für eine einzelne Tabelle.
Der Wert FieldIdentifier
¶
Der Wert FieldIdentifier
legt die Kennung des Feldes fest, für das der Titel geändert werden soll. Dies ist die gleiche Kennung, die du in der Tabellenkonfiguration im Wert Fields
verwendest. Eine vollständige Liste aller Felder findest du im Abschnitt Felddefinitionen.
Der Wert TableIdentifier
¶
Der optionale Wert TableIdentifier
steuert, ob der geänderte Spaltentitel auf alle Tabellen angewendet wird oder nur auf eine einzelne. Gültige Werte sind:
All
Session
Desktop
Resource
Process
Wenn du diesen Wert weglässt, wird der Standardwert All
verwendet. Wenn du Einträge für dasselbe Feld mit All
und einer bestimmten Tabelle kombinierst, hat der Eintrag für die spezifische Tabelle immer Vorrang vor dem All
-Eintrag.
Der Wert Title
¶
Der Wert Title
definiert den neuen Titel für die angegebene Tabellenspalte. Halte diesen Titel so kurz wie möglich und vermeide Steuerzeichen.
Der Wert IncludeSessionClients
¶
Der Wert IncludeSessionClients
steuert, ob Sitzungen für Client-Computer angezeigt werden, die die Sitzung gestartet haben. Wenn du diesen Wert auf Ja
setzt, werden Sitzungen für Client-Computer angezeigt. Wenn du diesen Wert auf Nein
setzt oder weglässt, werden Sitzungen nur für Computer angezeigt, auf denen diese Sitzungen laufen.
Das Aktivieren dieser Funktion verdoppelt die Zeit, die benötigt wird, um die Sitzungsinformationen vom System abzurufen. Wenn das ein Problem darstellt, solltest du diese Funktion deaktiviert lassen.
Der Wert CacheDuration
¶
Ändere oder setze diesen Wert nur, wenn du absolut sicher bist, das Richtige zu tun. Falsche Werte können zu Leistungsproblemen führen.
Dieser Wert legt die Cache-Dauer der Daten in Sekunden fest. Der Mindestwert beträgt 10 Sekunden, der Höchstwert 1200 Sekunden. Der optimale Wert für die Cache-Dauer ist der Standardwert von 60 Sekunden.
Felddefinitionen¶
In diesem Kapitel findest du eine vollständige Liste aller verfügbaren Felder in den folgenden Tabellen. Jede Tabelle hat eine Namensspalte mit der Bezeichnung des Feldes, dem Typ, der von Interesse ist, wenn du Skripte mit den Daten schreibst, und einer kurzen Beschreibung. Am Ende gibt es zwei Spalten, die anzeigen, ob das Feld für eine bestimmte Link-Version verfügbar ist. Ein schwarzer Kreis in dieser Spalte bedeutet, dass das Feld verfügbar ist.
Session-Felder¶
Wenn ein Feld in einer bestimmten Version des Links verfügbar ist, markiert ein schwarzer Kreis die Zeile in den Spalten „6App“ und/oder 7.5. Der Typ in der Spalte „Type“ ist der interne Datentyp.
Name |
Type |
Title |
6App |
7.5 |
---|---|---|---|---|
AccountName |
String |
Account Name |
● |
|
AgentVersion |
String |
Agent Version |
● |
|
ApplicationsInUse |
StringList |
Applications In Use |
● |
|
AutonomouslyBrokered |
Boolean |
Autonomously Brokered |
● |
|
BrokeringDuration |
Integer |
Brokering Duration |
● |
|
BrokeringTime |
DateTime |
Brokering Time |
● |
|
BrokeringUserName |
String |
Brokering User Name |
● |
|
BrokeringUserSID |
String |
Brokering User SID |
● |
|
BrowserName |
String |
Browser Name |
● |
|
CatalogName |
String |
Catalog Name |
● |
|
ClientAddress |
String |
Client Address |
● |
|
ClientBuffers |
Integer |
Client Buffers |
● |
|
ClientBuildNumber |
Integer |
Client Build Number |
● |
|
ClientCacheDisk |
Integer |
Client Cache Disk |
● |
|
ClientCacheLow |
Integer |
Client Cache Low |
● |
|
ClientCacheMinBitmapSize |
Integer |
Client Cache Min Bitmap Size |
● |
|
ClientCacheSize |
Integer |
Client Cache Size |
● |
|
ClientCacheTiny |
Integer |
Client Cache Tiny |
● |
|
ClientCacheXms |
Integer |
Client Cache XMS |
● |
|
ClientDirectory |
String |
Client Directory |
● |
|
ClientIPV4 |
String |
Client IPv4 |
● |
|
ClientName |
String |
Client Name |
● |
● |
ClientProductId |
Integer |
Client Product ID |
● |
|
ClientVersion |
String |
Client Version |
● |
|
ColorDepth |
String |
Color Depth |
● |
|
ConnectTime |
DateTime |
Connect Time |
● |
|
ConnectedViaHostName |
String |
Connected Via Host Name |
● |
|
ConnectedViaIP |
String |
Connected Via IP |
● |
|
ControllerDNSName |
String |
Controller DNS Name |
● |
|
CurrentTime |
DateTime |
Current Time |
● |
|
DNSName |
String |
DNS Name |
● |
|
DesktopGroupName |
String |
Desktop Group Name |
● |
|
DesktopGroupUid |
String |
Desktop Group UID |
● |
|
DesktopKind |
String |
Desktop Kind |
● |
|
DesktopSID |
String |
Desktop SID |
● |
|
DesktopUid |
Integer |
Desktop UID |
● |
|
DeviceId |
String |
Device ID |
● |
|
DisconnectTime |
DateTime |
Disconnect Time |
● |
|
EncryptionLevel |
String |
Encryption Level |
● |
|
EstablishmentDuration |
Integer |
Establishment Duration |
● |
|
EstablishmentTime |
DateTime |
Establishment Time |
● |
|
HardwareId |
String |
Hardware ID |
● |
|
HorizontalResolution |
Integer |
Horizontal Resolution |
● |
|
HostedMachineName |
String |
Hosted Machine Name |
● |
|
HostingServerName |
String |
Hosting Server Name |
● |
|
HypervisorConnectionName |
String |
Hypervisor Connection Name |
● |
|
IPAddress |
String |
IP Address |
● |
|
ImageOutOfDate |
String |
Image Out Of Date |
● |
|
InMaintenanceMode |
Boolean |
In Maintenance Mode |
● |
|
IsPhysical |
Boolean |
Is Physical |
● |
|
LastInputTime |
DateTime |
Last Input Time |
● |
|
LaunchedViaHostName |
String |
Launched Via Host Name |
● |
|
LaunchedViaIP |
String |
Launched Via IP |
● |
|
LogOnTime |
DateTime |
Log-On Time |
● |
|
MachineName |
String |
Machine Name |
● |
|
MachineSummaryState |
String |
Machine Summary State |
● |
|
MachineUid |
Integer |
Machine UID |
● |
|
OSType |
String |
OS Type |
● |
|
PersistUserChanges |
String |
Persist User Changes |
● |
|
PowerState |
String |
Power State |
● |
|
Protocol |
String |
Protocol |
● |
● |
ProvisioningType |
String |
Provisioning Type |
● |
|
SecureIcaActive |
Boolean |
Secure ICA Active |
● |
|
ServerBuffers |
String |
Server Buffers |
● |
|
ServerName |
String |
Server Name |
● |
|
SessionId |
Integer |
Session ID |
● |
● |
SessionKey |
String |
Session Key |
● |
|
SessionName |
String |
Session Name |
● |
|
SessionState |
String |
Session State |
● |
|
SessionStateChangeTime |
DateTime |
Session State Change Time |
● |
|
SessionSupport |
String |
Session Support |
● |
|
SessionType |
String |
Session Type |
● |
|
SmartAccessTags |
StringList |
Smart Access Tags |
● |
|
StartTime |
DateTime |
Start Time |
● |
|
State |
String |
State |
● |
|
Uid |
String |
UID |
● |
|
UserFullName |
String |
User Full Name |
● |
|
UserName |
String |
User Name |
● |
|
UserSID |
String |
User SID |
● |
|
UserUPN |
String |
User UPN |
● |
|
VerticalResolution |
Integer |
Vertical Resolution |
● |
|
VirtualIP |
String |
Virtual IP |
● |
Desktop-Felder¶
Ob ein Feld in einer bestimmten Link-Version verfügbar ist, wird mit einem schwarzen Kreis in den Spalten 6Desktop und/oder 7.5 angezeigt. Der Typ in der Typspalte ist der interne Datentyp.
Name |
Type |
Label |
6Desktop |
7.5 |
---|---|---|---|---|
AgentVersion |
String |
Agent Version |
● |
● |
ApplicationsInUse |
StringList |
Applications In Use |
● |
● |
AssignedClientName |
String |
Assigned Client Name |
● |
● |
AssignedIPAddress |
String |
Assigned IP Address |
● |
● |
AssociatedUserFullNames |
StringList |
Associated User Full Names |
● |
● |
AssociatedUserNames |
StringList |
Associated User Names |
● |
● |
AssociatedUserUPNs |
StringList |
Associated User UPNs |
● |
● |
AutonomouslyBrokered |
Boolean |
Autonomously Brokered |
● |
● |
CatalogKind |
String |
Catalog Kind |
● |
|
CatalogName |
String |
Catalog Name |
● |
● |
CatalogUid |
Integer |
Catalog UID |
● |
● |
ClientAddress |
String |
Client Address |
● |
● |
ClientName |
String |
Client Name |
● |
● |
ClientVersion |
String |
Client Version |
● |
● |
ColorDepth |
String |
Color Depth |
● |
● |
ConfigVersion |
Integer |
Config Version |
● |
|
ConnectedViaHostName |
String |
Connected Via Host Name |
● |
● |
ConnectedViaIP |
String |
Connected Via IP |
● |
● |
ControllerDNSName |
String |
Controller DNS Name |
● |
● |
DNSName |
String |
DNS Name |
● |
● |
DeliveryType |
String |
Delivery Type |
● |
|
Description |
String |
Description |
● |
● |
DesktopConditions |
StringList |
Desktop Conditions |
● |
● |
DesktopGroupName |
String |
Desktop Group Name |
● |
● |
DesktopGroupUid |
Integer |
Desktop Group UID |
● |
● |
DesktopKind |
String |
Desktop Kind |
● |
● |
DeviceId |
String |
Device ID |
● |
● |
FunctionalLevel |
String |
Functional Level |
● |
|
HardwareId |
String |
Hardware ID |
● |
● |
HostedMachineId |
String |
Hosted Machine ID |
● |
● |
HostedMachineName |
String |
Hosted Machine Name |
● |
● |
HostingServerName |
String |
Hosting Server Name |
● |
● |
HypervisorConnectionName |
String |
Hypervisor Connection Name |
● |
● |
HypervisorConnectionUid |
String |
Hypervisor Connection UID |
● |
● |
IPAddress |
String |
IP Address |
● |
● |
ImageOutOfDate |
Boolean |
Image Out of Date |
● |
● |
InMaintenanceMode |
Boolean |
In Maintenance Mode |
● |
● |
IsAssigned |
Boolean |
Is Assigned |
● |
● |
IsPhysical |
Boolean |
Is Physical |
● |
|
LastConnectionFailure |
String |
Last Connection Failure |
● |
● |
LastConnectionTime |
DateTime |
Last Connection Time |
● |
● |
LastConnectionUser |
String |
Last Connection User |
● |
● |
LastDeregistrationReason |
String |
Last Deregistration Reason |
● |
● |
LastDeregistrationTime |
DateTime |
Last Deregistration Time |
● |
● |
LastErrorReason |
String |
Last Error Reason |
● |
● |
LastErrorTime |
DateTime |
Last Error Time |
● |
● |
LastHostingUpdateTime |
DateTime |
Last Hosting Update Time |
● |
● |
LaunchedViaHostName |
String |
Launched Via Host Name |
● |
● |
LaunchedViaIP |
String |
Launched Via IP |
● |
● |
LicenseId |
String |
License ID |
● |
|
MachineInternalState |
String |
Machine Internal State |
● |
● |
MachineName |
String |
Machine Name |
● |
● |
MachineUid |
Integer |
Machine UID |
● |
● |
OSType |
String |
OS Type |
● |
● |
OSVersion |
String |
OS Version |
● |
● |
PersistUserChanges |
String |
Persist User Changes |
● |
|
PowerActionPending |
Boolean |
Power Action Pending |
● |
● |
PowerState |
String |
PowerState |
● |
● |
Protocol |
String |
Protocol |
● |
● |
ProvisioningType |
String |
Provisioning Type |
● |
|
PublishedApplications |
StringList |
Published Applications |
● |
● |
PublishedName |
String |
Published Name |
● |
● |
PvdStage |
String |
PVD Stage |
● |
● |
RegistrationState |
String |
Registration State |
● |
● |
SID |
String |
SID |
● |
● |
SecureIcaActive |
Boolean |
Secure ICA Active |
● |
● |
SecureIcaRequired |
Boolean |
Secure ICA Required |
● |
● |
SessionHidden |
Boolean |
Session Hidden |
● |
|
SessionId |
Integer |
Session ID |
● |
● |
SessionState |
String |
Session State |
● |
● |
SessionStateChangeTime |
DateTime |
Session State Change Time |
● |
● |
SessionUid |
Integer |
Session UID |
● |
● |
SessionUserName |
String |
Session User Name |
● |
● |
SessionUserSID |
String |
Session User SID |
● |
● |
SmartAccessTags |
StringList |
Smart Access Tags |
● |
● |
StartTime |
DateTime |
Start Time |
● |
● |
SummaryState |
String |
Summary State |
● |
● |
Tags |
StringList |
Tags |
● |
● |
Uid |
Integer |
UID |
● |
● |
WillShutdownAfterUse |
Boolean |
Will Shutdown After Use |
● |
● |
Prozess-Felder¶
Ob ein Feld in einer bestimmten Link-Version verfügbar ist, wird mit einem schwarzen Kreis in den Spalten „6App“ und/oder „7.5“ angezeigt. Der Typ in der Spalte „Type“ ist der interne Datentyp.
Name |
Type |
Label |
6App |
7.5 |
---|---|---|---|---|
ComputerName |
String |
Computer Name |
● |
● |
ExecutablePath |
String |
Executable Path |
● |
● |
Name |
String |
Name |
● |
● |
ProcessId |
Integer |
Process ID |
● |
● |
ProcessOwner |
String |
Process Owner |
● |
● |
Beispielkonfiguration¶
Die folgende Auflistung zeigt eine vollständige Beispielkonfiguration. Sie konfiguriert die XenData-Erweiterung für eine gemischte Umgebung mit zwei verschiedenen Versionen.
1<?xml version="1.0" encoding="UTF-8" ?>
2<Configuration
3 version="1"
4 xmlns="http://educateit.ch/software/BlueStone/Configuration/1">
5
6 <Module name="XenData">
7 <List name="Links">
8 <ListEntry>
9 <Value name="Name">LinkA75</Value>
10 <Value name="Version">7.5</Value>
11 <Value name="RemoteComputerList">
12 server02
13 server03
14 </Value>
15 <Value name="RemoteUsername">Administrator</Value>
16 <Value name="RemotePassword">***</Value>
17 </ListEntry>
18 <ListEntry>
19 <Value name="Name">LinkA6App</Value>
20 <Value name="Version">6App</Value>
21 <Value name="RemoteComputerList">
22 xap01
23 </Value>
24 <Value name="RemoteUsername">Administrator</Value>
25 <Value name="RemotePassword">***</Value>
26 </ListEntry>
27 <ListEntry>
28 <Value name="Name">LinkA6Desktop</Value>
29 <Value name="Version">6Desktop</Value>
30 <Value name="RemoteComputerList">
31 xdp0001
32 </Value>
33 <Value name="RemoteUsername">Administrator</Value>
34 <Value name="RemotePassword">***</Value>
35 </ListEntry>
36 <ListEntry>
37 <Value name="Name">LinkB</Value>
38 <Value name="Version">7.5</Value>
39 <Value name="RemoteComputerList">
40 server02
41 server03
42 </Value>
43 <Value name="RemoteUsername">Administrator</Value>
44 <Value name="RemotePassword">***</Value>
45 </ListEntry>
46 </List>
47 <List name="ContextMappings">
48 <ListEntry>
49 <Value name="SourceContext">
50 educateit
51 educateit.intra
52 </Value>
53 <Value name="LinkNames">
54 LinkA75
55 LinkA6App
56 LinkA6Desktop
57 </Value>
58 <Value name="Domain">educateit</Value>
59 </ListEntry>
60 <ListEntry>
61 <Value name="SourceContext">
62 EXAMPLE3
63 EXAMPLE4
64 EXAMPLE5
65 </Value>
66 <Value name="LinkNames">
67 LinkB
68 </Value>
69 <Value name="Domain">example</Value>
70 </ListEntry>
71 </List>
72 <List name="TableConfiguration">
73 <ListEntry>
74 <Value name="LinkVersion">7.5</Value>
75 <Value name="TableIdentifier">Session</Value>
76 <Value name="Fields">
77 ApplicationsInUse
78 ClientName$
79 MachineName$
80 SessionId$
81 -SessionKey
82 SessionState
83 -SessionType
84 StartTime
85 UserName$
86 Action
87 </Value>
88 <List name="Actions">
89 <ListEntry>
90 <Value name="Label">Example</Value>
91 <Value name="Arguments">
92 profile=Example
93 </Value>
94 </ListEntry>
95 </List>
96 </ListEntry>
97 <ListEntry>
98 <Value name="LinkVersion">7.5</Value>
99 <Value name="TableIdentifier">Desktop</Value>
100 <Value name="Fields">
101 AssociatedUserNames
102 MachineName
103 SessionUserName
104 SummaryState
105 </Value>
106 <List name="Actions" />
107 </ListEntry>
108 <ListEntry>
109 <Value name="LinkVersion">6App</Value>
110 <Value name="TableIdentifier">Session</Value>
111 <Value name="Fields">
112 AccountName
113 ClientName
114 LogOnTime
115 ServerName
116 SessionId
117 SessionName
118 State
119 Action
120 </Value>
121 <List name="Actions">
122 <ListEntry>
123 <Value name="Label">Example</Value>
124 <Value name="Arguments">
125 profile=Example
126 </Value>
127 </ListEntry>
128 </List>
129 </ListEntry>
130 <ListEntry>
131 <Value name="LinkVersion">6Desktop</Value>
132 <Value name="TableIdentifier">Desktop</Value>
133 <Value name="Fields">
134 AssociatedUserNames
135 MachineName
136 SessionUserName
137 SummaryState
138 </Value>
139 <List name="Actions" />
140 </ListEntry>
141 <ListEntry>
142 <Value name="TableIdentifier">Process</Value>
143 <Value name="Fields">
144 Name
145 ProcessId$
146 ProcessOwner
147 ComputerName$
148 Action
149 </Value>
150 <List name="Actions">
151 <ListEntry>
152 <Value name="Label">Action</Value>
153 <Value name="Arguments">
154 profile=process
155 </Value>
156 </ListEntry>
157 </List>
158 </ListEntry>
159 </List>
160 <Value name="TableOrder">
161 Session
162 Desktop
163 Process
164 </Value>
165 <Value name="VersionOrder">
166 7.5
167 6App
168 6Desktop
169 </Value>
170 <Value name="VersionOrderFirst">No</Value>
171 <Value name="ShowTableVersion">Yes</Value>
172 </Module>
173</Configuration>