Evergreen Script – Update your Software, the lazy way

Warum das Ganze?

Das Ganze entstand, weil ich es leid war, Microsoft Teams Machine Based bei Kunden zu installieren und zu aktualisieren. Ein weiterer Punkt, der mich in dieser Angelegenheit antrieb, war, dass ich zu Kunden gekommen war und in ihrem Golden Image die wichtigsten (und einfachsten) Dinge nicht berücksichtigt wurden.

Zum Beispiel:

  • Deaktivieren der automatischen Aktualisierung der Software (Adobe Reader, Microsoft Edge, Google Chrome usw.)
  • Falsche Installer oder fehlende Parameter bei der Installation (User Based Installation für Microsoft OneDrive, Slack oder Microsoft Teams)
  • Fehlende Anpassungen nach der Installation (Reg-Hacks oder Anpassungen an Dateien bei Microsoft FSLogix oder Microsoft Teams)
  • Suche nach aktuellen Versionen auf unübersichtlichen Webseiten (Cisco Webex)

Genau an dieser Stelle wollte ich mit dem Evergreen Script Abhilfe schaffen.

  • Die Suche nach der aktuellen Version auf den verwirrenden Herstellerseiten entfällt
  • Vergleich der installierten Version mit der aktuellen Version aus dem Internet
  • Automatischer Download der aktuellen Version (und bei manchen Programmen sogar der aktuellen ADMX Dateien)
  • Deinstallation (falls erforderlich) der Software und Installation (mit den richtigen Parametern) der aktuellen neuen Version
  • Anpassung der Geplanten Tasks und Dienste, so dass keine automatischen Aktualisierungen stören können
  • Anpassung der neuen Software an die Besonderheiten des Betriebssystems (z. B. Hinzufügen des Geplanten Tasks für Windows Server 2019 und neuer bei der Installation von Microsoft FSLogix für den Fehler “Event ID 2 wsearch”)

Das Evergreen Script

Download Version 2.06

Wichtig!
Seit Version 1.41 erkennt das Evergreen Script automatisch, ob es eine neue Version gibt. Wenn es eine neue Version gibt, wird beim Start der GUI der Benutzer gefragt, ob er das Script aktualisieren möchte.

Evergreen Script Auto Update Pop Up

Beim Start mit dem Parameter -File & -GUIfile wird dies automatisch durchgeführt und anschliessend die neue Script Version mit dem Konfigurationsfile nochmals gestartet.

Evergreen Script Auto Update

GUI Methode

Ladet das Evergreen Script aus GitHub herunter und startet es in einer Administrativen PowerShell Console.

Wichtig!
Das Evergreen Script kann sowohl lokal als auch von einem UNC Pfad aus angesprochen und gestartet werden.

Administrative PowerShell Console

Das Skript wird standardmäßig mit der Datei LastSetting.txt gestartet, die sich im selben Ordner befindet. Wenn die GUI mit einer anderen Datei gestartet werden soll, verwendet den Parameter -GUIfile.

Administrative PowerShell Console GUIfile Parameter

Es erscheint die GUI des Evergreen Scripts mit der auswählbaren Software auf der General Seite.

Evergreen Script GUI General Page

Über die oben angeordeneten Select Mode Optionen, kann folgendes definiert werden.

  • Soll die ausgewählte Software nur herunterladen werden
  • Soll die ausgewählte Software installiert werden (wenn die Installationsdateien schon im Vorraus per Evergreen Script heruntergeladen wurde)
  • Soll die Software erst heruntergeladen und dann installiert werden

Das Aufteilen der Funktionen bezügliche Herunterladen und Installieren, wird oft genutzt, wenn der Zielrechner keine Internetanbindung hat.

Evergreen Script Select Mode Download Install

Über die Optionen Select Language, Select Architecture und Select Installer Type können Globale Einstellungen für die ausgewählte Software gesetzt werden. Dies wird natürlich nur berücksichtigt, wenn das Programm diese Auswahl beim Herunterladen oder Installieren zur Verfügung stellt.

Die Einstellunge bezüglich Sprache (Select Language), Architektur (Select Architecture) und Installer Typ (Select Installer Type) kann auf der Detail Seite pro Software nochmals angepasst werden. Die Einstellung auf der Detail Seite übschreibt für die eine Software die Globale Einstellung.

Unter Select Installer Type wird hier zwischen User Based (Laptop, Static Citrix Worker usw.) und Machine Based (Random Citrix Worker, RDS Host) unterschieden.

Evergreen Script GUI Select Language Select Architecture Select Installer Type

Für manche Software sind weitere auswählbare Optionen verfügbar, wie der Update Kanal / Ring oder die Lizenz Version.

Evergreen Script GUI Select Software

Alle Einstellungen werden, beim klick auf Save oder Start, lokal in der Datei LastSetting.txt gespeichert und beim nächsten Start automatisch wieder dort ausgelesen. Durch Klicken auf Save wird die LastSetting.txt erstellt, ohne eine Installation zu starten.

Evergreen Script GUI Select All

Auf der Detail Seite ist die unter General ausgewählte Software ebenfalls schon ausgewählt. Wenn auf der Detail Seite etwas an der ausgewählten Software geändert wird, wird dies ebenfalls übertragen.

Evergreen Script GUI Detail Page

Die Globalen Einstellunge bezüglich Sprache (Select Language), Architektur (Select Architecture) und Installer Typ (Select Installer Type) können auf der Detail Seite nochmals pro Software angepasst werden. Dies überschreibt die Globale Einstellung für diese Software.

Zusätzlich kann Microsoft Visio und Microsoft Project ausgewählt werden. Wenn dies der Fall ist, wird die install.xml für Microsoft 365 Apps oder Microsoft Office um die ausgewählten Optionen erweitert.

Evergreen Script GUI Detail Page Select Software

Vier Optional Mode sind auf der Detail Seite verfügbar:

Evergreen Script GUI Detail Page Optional Mode
  • WhatIf Mode: Wenn dieser aktiv ist, werden die Eingestellten Tätigkeiten simuliert. Es werden keine Installer heruntergeladen oder installiert. Man sieht nur in der Ausgabe, ob es neuere Software gibt.

    Die Einzige Tätigkeiten die das Script durchführt ist die Erstellung des FW Log und des Install Log.
Evergreen Script WhatIf Mode Download

Es wird eine Meldung ausgeworfen das man sich im WhatIf Mode befindet.

Evergreen Script WhatIf Mode Install
  • Installer Repository Mode: Im Installer Repository Mode werden die Installer der ausgewählten Software vor dem neuen Download in den Ordner _Repository kopiert.
Evergreen Script Installer Repository Mode
  • CleanUp Mode: Im CleanUp Mode werden die Installer der ausgewählen Software nach der Installation gelöscht. Dies kann auf Golden Image Servern genutzt werden, damit dieser schlank bleibt.
Evergreen Script CleanUp Mode
  • Start Menu CleanUp Mode: Im Start Menu CleanUp Mode werden die Startmenüeinträge der installierten Software nach der Installation gelöscht. Dies kann auf Golden Image Servern verwendet werden, um das Startmenü sauber zu halten.

Zusätzlich kann man unter Custom Microsoft 365 Apps or Microsoft Office XML File, seine eigene XML Datei auswählen und diese wird dann umkopiert (überschreibt eine eventuelle install.xml). Der Prozess zum umkopieren und umbenennen wird über Save und Start ausgelöst.

Evergreen Script Custom Microsoft 365 Apps XML File

Wichtig!
Wenn dies genutzt wird, werden die über Evergreen Script eingestellten Optionen (Visio / Project hinzufügen, Sprache, Architektur) nicht berücksichtigt.

Unattended Methode

Soll das Evergreen Script über einen geplanten Task oder Dritt-Hersteller Software gestartet werden, kann dies per Parameter vorkonfiguriert werden.

Ladet es herunter und startet es in einer Administrativen PowerShell Console.

Evergreen Script -File unattended Mode

Mit dem Parameter -File wird nicht die GUI gestartet um die Einstellungen zu definieren, sondern es wird die übergebene Konfiguration Datei ausgelesen, die vorher über die GUI Methode erstellt wurde (LastSetting.txt).

-File Parameter Evergreen Script

Die Datei muss nicht LastSetting.txt heissen, sondern wird so über das Script erzeugt und kann dann an die Bedürfnisse angepasst werden.

XML Setting files

LastSetting.txt

Um eine LastSetting.txt GUI-basiert zu erstellen, startet einfach das Evergreen Script ohne Parameter und wählt in der GUI eure Einstellungen und Software aus.

Evergreen Script GUI

Klickt auf Save und brecht dann das Script per Cancel ab. Die nun im Evergreen Script Ordner erzeugte LastSetting.txt Datei könnt ihr für euren Parameter Start verwenden.

Die Datei besteht im Moment aus 170 Zeilen mit wenigen Zeichen (meistens 1 oder 0).

Evergreen Script LastSetting.txt

Natürlich kann man sich die Datei auch selber manuell zusammen bauen. Hierfür kurz die Erläuterung der einzelnen Zeilen (Einstellungen).

Hintergrund Informationen

Für jede ausgewählte und heruntergeladene Software wird ein neuer Ordner unter dem Evergreen Script Ordner angelegt. In dieser wird jeweils beim Download eine Versionsdatei und beim Installieren einer Protokolldatei erzeugt.

Beim Download Durchlauf wird die im Internet verfügbare Version mit der lokalen Version, aus der Version Datei, verglichen. Wenn eine neuere Version verfügbar ist, werden die lokalen Installationsdateien und die Versionsdatei gelöscht und die neue Software heruntergeladen, sowie eine neue Versionsdatei erstellt.

Bevor die ausgefüllte Software heruntergeladen wird, wird der Download Link im Firewall Log unter _Install Logs abgelegt.

Purpose/Change:

Example

.\Evergreen.ps1 -file Download.txt

Lädt die Konfiguration aus der Datei Download.txt und arbeitet dies ab.

Evergreen Script -File Parameter

.\Evergreen.ps1 -GUIfile Download.txt

Startet die GUI mit den Optionen aus der Datei Download.txt.

Evergreen Script -GUIfile Parameter

.\Evergreen.ps1

Startet die GUI, um den Modus (Installieren und/oder Herunterladen) und die Software (Release, Update Ring, Sprache usw.) auszuwählen.

Evergreen Script GUI

Notes

Evergreen PowerShell Module

Wenn Download ausgewählt ist, wird das Modul bei jeder Ausführung des Skripts überprüft, installiert oder upgedatet wenn eine neue Version verfügbar ist.

Nevergreen PowerShell Module

Wenn Download ausgewählt ist, wird das Modul bei jeder Ausführung des Skripts überprüft, installiert oder upgedatet wenn eine neue Version verfügbar ist.

VcRedist PowerShell Module

Wenn Download ausgewählt ist, wird das Modul bei jeder Ausführung des Skripts überprüft, installiert oder upgedatet wenn eine neue Version verfügbar ist.

1Password

Installationsargumente:

7 Zip

Diese Architekturen sind wählbar:

Installationsargumente:

Adobe Pro DC

Diese Architekturen sind wählbar:

Installationsargumente:

Nach dem Update wird der Adobe Dienst und die geplanten Tasks gestoppt und deaktiviert.

Adobe Reader DC

Diese Architekturen sind wählbar:

Wählbar sind die folgenden Sprachen:

Installationsargumente:

Nach der Installation wird der Adobe Dienst und die geplanten Tasks gestoppt und deaktiviert.

Autodesk DWG TrueView

Entpacken der Installer:

Installationsargumente:

BIS-F

Installationsargumente:

Nach der Installation, werde die Skripte noch bezüglich Task Offload, RSS Aktivierung und DEP Deaktivierung angepasst.

Die BIS-F admx und adml Dateien werden im Ordner ADMX gespeichert.

Cisco Webex Teams

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

Citrix Files

Installationsargumente:

Citrix Hypervisor Tools

Diese Architekturen sind wählbar:

Installationsargumente:

Citrix WorkspaceApp

Installationsvarianten:

Vor der Installation des neuen Receivers wird der alte Receiver über das Receiver CleanUp Tool deinstalliert.

Installationsargumente:

Nach der Installation werden noch verschiedene Registry Schlüssel gesetzt.

Wie immer sollte nach der Installation des neuen Workspace App das System neu gebootet werden.

ControlUp Agent

Installationsvarianten:

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

deviceTRUST

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

Die deviceTrust admx und adml Dateien werden im Ordner ADMX gespeichert.

Filezilla

Installationsargumente:

Foxit PDF Editor

Wählbar sind die folgenden Sprachen:

Installationsargumente:

Foxit Reader

Wählbar sind die folgenden Sprachen:

Installationsargumente:

GIMP

Installationsargumente:

Git for Windows

Diese Architekturen sind wählbar:

Installationsargumente:

Google Chrome

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

Nach der Installation werden die Chrome-Dienste und geplanten Tasks gestoppt und deaktiviert.

Die admx und adml Dateien von Google Chrome werden im Ordner ADMX gespeichert.

Greenshot

Installationsargumente:

ImageGlass

Diese Architekturen sind wählbar:

Installationsargumente:

IrfanView

Diese Architekturen sind wählbar:

Wählbar sind die folgenden Sprachen:

Installationsargumente:

KeePass

Wählbar sind die folgenden Sprachen:

Installationsargumente:

LogMeIn GoToMeeting

Installationsargumente:

Microsoft .Net Framework

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

Microsoft 365 Apps

Installationsvarianten:

Diese Architekturen sind wählbar:

Wählbar sind die folgenden Sprachen:

Beim Download wird nicht nur die setup.exe heruntergeladen, sondern es werden auch die folgenden xml-Dateien erstellt, wenn sie nicht bereits im Ordner vorhanden sind:

remove.xml

install.xml

Anschließend wird die install.xml während der Install Phase verwendet, um die erforderlichen Installationsdateien herunterzuladen.

Vor der Installation der neuen Microsoft 365 Apps Version, wird die vorherige Office Installation entfernt (remove.xml).

Danach beginnt die Neuinstallation der Software (install.xml).

Es kann eine install.xml mit den Besonderheiten der eigenen Installation hinterlegt und vorab verwendet werden (z.B. Sprachen, App Exclusion oder Inclusion (Visio & Project)).

Standardmäßig ist das ausgewählte in der install.xml definiert (hier 64Bit / Match OS Language / Semi Annual Channel):

Microsoft AVD Remote Desktop

Installationsvarianten:

Diese Architekturen sind wählbar:

Installationsargumente:

Microsoft Azure CLI

Installationsargumente:

Microsoft Azure Data Studio

Installationsvarianten:

Diese Architekturen sind wählbar: