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

XenData

Version

2.2

Funktionen

Adapter

Abschnitte

  • Standard: XenData

  • Der Abschnitt kann konfiguriert werden.

Informationsblöcke

  • xenData75

  • xenData6a

  • xenData6d

  • xenData75a (im geteilten Modus)

  • xenData76d (im geteilten Modus)

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.

../../../_images/powershell-gethost.jpg

Überprüfe die PowerShell-Version mit dem Befehl Get-Host.

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.

../../../_images/check-winrm.jpg

Die Befehle zur Überprüfung, ob WinRM korrekt eingerichtet ist.

  • Ö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.

    Beispielkonfiguration für einen Link
     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 und server03 durchführen. Um den ersten Server, in der Domäne EDUCATEIT, 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.

    ../../../_images/check-winrm-password-prompt.jpg
  • 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.

../../../_images/anatomy.jpg

Die Struktur eines Raptor-Objekts.

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.

../../../_images/object-elements.jpg

Die Elemente eines Raptor-Objekts.

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.

../../../_images/information-block-schema.jpg

Beispiel eines Informationsblockschemas.

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.

../../../_images/information-block-details.jpg

Details eines Informationsblocks.

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.

../../../_images/information-block-view.jpg

Die Ansicht, die die Rohdaten in Daten für die Anzeige umwandelt.

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.

../../../_images/request-cycle.jpg

Der vollständige Anfragezyklus.

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.

../../../_images/scan-for-suitable-objects-1.jpg

Der Adapter sucht nach neuen Objekten, die den richtigen Kriterien entsprechen.

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.

../../../_images/scan-for-suitable-objects-2.jpg

Die Erweiterung fügt jedem passenden Objekt einen Informationsblock hinzu.

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

Value

PsServicePort

Optional

Integer

  • Minimum value: 1

  • Maximum value: 65535

Default Value:

17691

List

Links

Complex list definition

Value

Name

String

  • Must not be empty.

  • Must match this regular expression: [-_a-z0-9]+                        

  • Maximum length: 128

Value

Version

String

  • Must not be empty.

  • Must be one of this: 7.5, 7.5App, 7.5Desktop, 6App, 6Desktop

Value

RemoteComputerList

Optional

StringList

  • Must match this regular expression:                             [-a-z0-9:._]+                        

Value

RemoteUsername

Optional

String

  • Must match this regular expression: [-a-z0-9_.,;:@\\/]+                        

Value

RemotePassword

Optional

Password

Complex list definition

Value

SourceContext

StringList

  • Must not be empty.

  • Must not have duplicates.

Value

LinkNames

StringList

  • Must not be empty.

  • Must match this regular expression: [-_a-z0-9]{1,128}                        

  • Must not have duplicates.

Value

Domain

String

  • Must not be empty.

  • Must match this regular expression: [-_a-z0-9.]+                        

Complex list definition

Value

LinkName

Optional

String

  • Must match this regular expression: [-_a-z0-9]+                        

Value

LinkVersion

Optional

String

  • Must be one of this: 7.5, 7.5App, 7.5Desktop, 6App, 6Desktop

Value

ObjectType

Optional

String

  • Must be one of this: All, User, Computer

Default Value:

All

Value

TableIdentifier

String

  • Must be one of this: Session, Desktop, Resource, Process

Value

Fields

StringList

  • Must not be empty.

List

Actions

Complex list definition

Value

Label

String

  • Must not be empty.

  • Maximum length: 64

  • Must match this regular expression: [^[:cntrl:]]+                                    

Value

Arguments

StringList

Value

ProgramPath

Optional

String

Value

TableOrder

Optional

StringList

  • Must be one of this: Session, Desktop, Resource, Process

  • Must not have duplicates.

Value

VersionOrder

Optional

StringList

  • Must be one of this: 7.5, 7.5App, 7.5Desktop, 6App, 6Desktop

  • Must not have duplicates.

Value

VersionOrderFirst

Optional

Boolean

Default Value:

No

Value

ShowTableVersion

Optional

Boolean

Default Value:

No

List

CustomValueLabel

Optional

Complex list definition

Value

Table

StringList

  • Must not be empty.

  • Must not have duplicates.

  • Must be one of this: Session, Desktop, Resource, Process

Value

Version

StringList

  • Must not be empty.

  • Must not have duplicates.

  • Must be one of this: 7.5, 7.5App, 7.5Desktop, 6App, 6Desktop

Value

Label

String

  • Must not be empty.

  • Maximum length: 64

  • Must match this regular expression: [^[:cntrl:]]+                        

List

CustomColumnTitle

Optional

Complex list definition

Value

FieldIdentifier

String

  • Must not be empty.

  • Maximum length: 64

  • Must match this regular expression: [a-z0-9]+

Value

TableIdentifier

Optional

String

  • Must be one of this: All, Session, Desktop, Resource, Process

Default Value:

All

Value

Title

String

  • Must not be empty.

  • Maximum length: 64

  • Must match this regular expression: [^[:cntrl:]]+                        

Value

IncludeSessionClients

Optional

Boolean

Default Value:

No

Value

CacheDuration

Optional

Integer

  • Minimum value: 10

  • Maximum value: 1200

Default Value:

60

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>

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.

../../../_images/value-labels.jpg

Die Beschriftungen für die Tabellen im Xen Data Bereich.

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

{table}

Dieser Platzhalter wird durch die Tabellenkennung ersetzt.

{version}

Dieser Platzhalter wird durch die Versionskennung ersetzt.

{shortVersion}

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>