Anwendungsvirtualisierung, Internet der Dinge und Cloud Computing, Blog von Sacha Thomet

Endlich 1.0 – aber noch lange nicht fertig!

Im November 2014 habe ich ein Artikel geschrieben über die Übernahme des HealthCheckScripts für XenApp & XenDesktop 7.x:
XenDesktop & XenApp FMA (7.x) HealthCheck – Oops!… I Did It Again

sheepsJetzt nach fast 2 Jahren fortlaufender Entwicklung dieses Scripts präsentiere ich die Version 1.0 des XenApp & XenDesktop HeathChecks.

Gestartet bin ich mit einer ziemlich rudimentären Version des Scripts und mittlerweile habe ich einige Tester und Mitwirkende bei diesem Script. Zwischenzeitlich ist das Script auch auf GitHub zu finden und es ist positiv überraschend wie viele Leute aus der Community bereits mit helfen das Script zu erweitern und verbessern.

Nachdem viele 0.xVersionen released wurden, ist jetzt neu auch die XML Konfigurationsdatei mit dabei. Diese Änderung, welche wir vor allem Stefan Beckmann zu verdanken haben, ist es Wert die Version nun 1.0 zu nennen.

xaxd-xml

Der grosse Vorteil der XML-Datei ist es, dass das Script und die Konfiguration von einander getrennt sind. Somit ist sowohl der Austausch des Scripts wie auch die Pflege von vielen verschiedenen Umgebungen kein Problem. Vorher musste nach dem Austausch des Scripts immer noch der Header angepasst werden.  Jetzt wird einfach nur das Script aktualisiert, sofern nichts im XML geändert hat bleibt dieses genau so bestehen.

 

Die XML Datei muss sich im gleichen Verzeichnis befinden wie das Script und der gleiche Namen haben, wie hier dieses Beispiel:

XA-and-XD-HealthCheck.ps1
XA-and-XD-HealthCheck_Parameters.xml

Wie bereits erwähnt wurde die XML Datei von Stefan Beckmann (Twitter: @alphasteff) integriert.

github

Die neuste Version des Scripts kann jeweils auf GitHub gefunden werden:
https://github.com/sacha81/XA-and-XD-HealthCheck 

html script output

Die HTML Ausgabe gewinnt von Version zu Version mehr Inhalt, schwierig ist es natürlich zu entscheiden welche Funktionserweiterungsanfragen berücksichtig werden und welche nicht. Jede weitere Funktion kann das Script unübersichtlicher machen und erhöht die Laufzeit des Scripts. Einige Funktionen können deshalb im XML ein und ausgeschaltet werden.

Aktuell wird von den Delivery Controller und den Worker Maschinen (XenApp Server und virtuelle Desktops) der Prozessor, der Festplattenplatz und der Ram Speicher gecheckt. Da in einer Umgebung mit der FMA Architektur problemlos unterschiedliche Versionen von VDAs im Einsatz stehen können, wird nun auch dies geprüft und ausgegeben. Weiter sind für die Störungssuche auch Informationen zu den Hypervisor Hosts in den Worker-Tabellen enthalten.

Dieser Code ist auf GitHub:

https://github.com/sacha81/XA-and-XD-HealthCheck/

Für Fehlermeldungen oder Funktionserweiterungsanfragen benutzt bitte direkt GitHub, natürlich freue mich auch über die Mitarbeit an den Scripts in GitHub!

21 Antworten auf Endlich 1.0 – aber noch lange nicht fertig!

  • Hoi Sacha
    Dein Health Check Tool habe ich soeben auf einer produktiven XenDesektop HDX 3D Umgebung getestet. Gute Tool, das auch auf Anhieb funktioniert. Auf unserer XenApp Cloud werde ich auch noch testen.
    Für XenDesktop wäre noch sehr dienlich, wenn der Grafikmode noch sichtbar wäre. (legacy Grafik, Thinwire, Thinwire plus, H.264,Framehawk, usw.). Für HDX 3d Pro User wäre es auch noch nützlich das aktive NVIDIA Profil zu sehen.

    Dies als Vorschläge für die nächsten Versionen.

    Gruss Mario

    • Ich weiss nicht ob das einfach so geht, da dies nicht direkt auf die Maschine verknüpft ist sondern per Policy kommt. Ich nehm’s mal im Git auf die Feature-Request-Liste. Der RemoteDisplayAnyalyzer von Barry Schiffer und Brahm Wolfs kennst du sicher – der ist Hammer zum Sachen im Bereich Grafik zu testen.

      • Der ist im Einsatz. Nätürlich muss die Info nicht so tief wie das Tool gehen. Es geht mehr darum, eine Übersicht zu haben, ob der User im richtigen Grafikmode arbeitet, d.h. Remote im Compatibility Mode und lokal H.264.

        • Ich habe mal eine erste Version gemacht, ist nicht ganz Trivial … möchtest du testen? Dann kann ich dir den Code mal vorab per Mail senden.
          Bedingungen dass es klappt: 1. User muss angemeldet sein. 2. Maschine muss per RPC erreichbar sein (wie alle Detail-Checks).

        • Wieso nicht für alles Selective H264?

    • Ist nun ab Version 1.2.1 drin – danke für den Input.

  • Hello Sacha,

    looooook decent:)
    Can you please explain me How XML file is important?
    Secondly i need to tweak or make some additional output.. does it require to modify both files?

    Kr, Rakesh

    • You need that to configure the behaviour of your Script, have a look into the XML and you will see your options to configure.

  • such as add email address

  • Hi Sacha,

    Thank you for the script.
    I have tried to run it but get the following errors:

    New-Variable : Cannot overwrite variable EnvironmentName because the variable has been optimized. Try using the
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At C:ToolsXA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (EnvironmentName:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    New-Variable : Cannot overwrite variable ShowXenAppTable because the variable has been optimized. Try using the
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At C:ToolsXA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (ShowXenAppTable:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    New-Variable : Cannot overwrite variable PvsWriteMaxSize because the variable has been optimized. Try using the
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At C:ToolsXA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (PvsWriteMaxSize:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    The variable ‘$PvsWriteMaxSize’ cannot be retrieved because it has not been set.
    At C:ToolsXA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:87 char:20
    + $PvsWriteMaxSize = $PvsWriteMaxSize * 1Gb
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (PvsWriteMaxSize:String) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

  • XenAppTable is not showing for me. Both files are at same folder and Parameters file is correctly filled out.

    Error:
    =================
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (EnvironmentName:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    New-Variable : Cannot overwrite variable ShowXenAppTable because the variable has been optimized. Try using the
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (ShowXenAppTable:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    New-Variable : Cannot overwrite variable PvsWriteMaxSize because the variable has been optimized. Try using the
    New-Variable or Set-Variable cmdlet (without any aliases), or dot-source the command that you are using to set the
    variable.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:80 char:26
    + If ($CreateVariable) { New-Variable -Name $_.Name -Value $VarValue -Scope $_.S …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : WriteError: (PvsWriteMaxSize:String) [New-Variable], SessionStateUnauthorizedAccessExcep
    tion
    + FullyQualifiedErrorId : VariableNotWritableRare,Microsoft.PowerShell.Commands.NewVariableCommand

    The variable ‘$PvsWriteMaxSize’ cannot be retrieved because it has not been set.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:87 char:20
    + $PvsWriteMaxSize = $PvsWriteMaxSize * 1Gb
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (PvsWriteMaxSize:String) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

    The variable ‘$ShowXenAppTable’ cannot be retrieved because it has not been set.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:987 char:4
    + if($ShowXenAppTable -eq 1 ) {
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (ShowXenAppTable:String) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

    The variable ‘$EnvironmentName’ cannot be retrieved because it has not been set.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:1241 char:21
    + $EnvironmentName = “$ $XDVersion”
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (EnvironmentName:String) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

    The variable ‘$ShowXenAppTable’ cannot be retrieved because it has not been set.
    At D:XA-and-XD-HealthCheck-masterXA-and-XD-HealthCheck.ps1:1264 char:5
    + if($ShowXenAppTable -eq 1 ) {
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (ShowXenAppTable:String) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

  • hallo sascha
    blöde frage, kann ich mehrere email absender eintragen? finde nicht raus wie das gehen soll. kannst mir weiter helfen?
    das script is ansonsten genial

    • 1. Es gibt keine blöden Fragen.

      2. Willst du aber mehrere Ziel-Adressen eintragen? Richtig? Dann geht das so:



      emailTo
      citrix@meinedomain.ch,sacha.thomet@meinedomain.ch
      [string]
      Script

      • hallo sacha

        hmm ich war mir fast sicher, das ich es so probiert hatte, ging dann nicht, hab es jetzt nochmal getestet, mit 3 email empfängern nur mit komma getrennt, nun geht es, cool, dann lass ich das geile script mal per task durchheizen. merci vielmol, für des coole script! gruss frank

Leave a Reply

Your email address will not be published. Required fields are marked *

Follow me on Twitter