Schritt für Schritt Anleitung

Daniel White
2026-01-01T18:42:42Z

Das folgende Kapitel enthält eine “Schritt für Schritt” Anleitung für die Verwendung des Matrix42 PreOS Package Editors.

Mit Hilfe des Matrix42 PreOS Package Editors lassen sich die nötige Paket-Ordner-Struktur und die benötigten Dateien anlegen und bearbeiten. Paket-Informationen werden dabei in einer XML-Datei abgelegt und die Logik des Paketes muss in einem PowerShell-Skript implementiert werden.

Es sind Beispiel- und produktive PreOS-Pakete vorhanden, die im Software-Depot der EMC importiert werden können. Diese können und sollen als Beispiel und Orientierung für neue PreOS Pakete oder Varianten dienen.

Die Plattform des WinPE-basierten Deployments bietet absolute Freiheit in der Implementierung eines PreOS-Paketes - die grundlegende Skript-Sprache hierbei ist PowerShell. Unterstützt wird man hierbei durch Matrix42 CMDLets, die Domain-spezifischen Kontext kapseln und anbieten, wie zum Beispiel die Computer-Variablen. Auf diese kann mit dem CMDLet Get-EmpirumVariable zugegriffen werden.

Das SimpleOsDeployment-Paket ist ein Beispiel solcher Matrix42 PreOS-Pakete und enthält die Funktionalität, um eine einfache Windows 10 Installation durchzuführen. Das SimpleOsDeployment-Paket kommt mit zusätzlichen Variablendefinitionen, die das Installationsverhalten steuern. Variablen können im Matrix42 PreOS Package Editor hinzugefügt werden. Alle Metadaten und die Variablendefinitionen werden in der EmpirumPackageData.xml Datei gespeichert.

Die Matrix42 PreOS-Pakete können über das Software-Depot der EMC importiert werden und stehen dann als spezielle Softwarepakete in Empirum zur Verfügung. Die Pakete werden immer im Register "Matrix42 PreOS Packages" abgelegt. Damit können Sie wie gewohnt die Matrix42 PreOS-Pakete über die Administration einem Computer zuweisen, der diese während eines WinPE-Bootvorgangs ausführen wird.

In den folgenden Kapiteln werden nun die Schritte beschrieben, um ein neues Matrix42 PreOS Paket zu erstellen, oder ein bestehendes zum Bearbeiten zu öffnen:

Installieren des PreOS Package Editors

Starten des Matrix42 PreOS Package Editors

Erstellen eines neuen PreOS Paketes

Öffnen eines bestehenden Matrix42 PreOS Paketes

Ändern der Paket-Informationen

Bearbeiten des Paket-Skriptes

Speichern der Änderungen der Paket-Informationen

Speichern der Änderungen des Paket-Skriptes

Installieren des Matrix42 PreOS Package Editors

Das Matrix42 PreOS Package Editor Paket 1.0 ist Teil des Matrix42 Empirum v18.0 Releases. Nach dem Empirum Installation bzw. Update kann das Paket wie üblich über die Matrix42 Management Console in der Administration einem Computer zugewiesen und die Installation aktiviert werden.

Damit der Matrix42 PreOS Package Editor in der PowerShell ISE richtig geladen werden kann muss die PowerShell Execution Policy auf den Wert RemoteSigned, Unrestricted oder Bypass gesetzt werden.

Die aktuelle Version Matrix42 PreOS Package Editor Paket ist Teil des WinPE PreBoot Support Pakets und ist über den Matrix42 Marketplace erhältlich.

Nach der Installation des WinPE PreBoot Support Pakets liegt das Matrix42 PreOS Package Editor Paket im Configurator$\PackageStore Verzeichnis des Empirum-Servers und kann wie üblich mit Hilfe der Matrix42 Management Console in der Depot-Konfiguration importiert werden.

Starten des Matrix42 PreOS Package Editors

Mit der Installation des Matrix42 PreOS Package Editor Pakets wird eine Verknüpfung auf dem Desktop angelegt, mit dessen Hilfe der Editor geöffnet werden kann.

Der Matrix42 PreOS Package Editor ist ein PowerShell ISE Add-On Tool. Beim Starten des Editors wird somit die PowerShell ISE Anwendung geöffnet, die den Matrix42 PreOS Package Editor mit öffnet.

Der Matrix42 PreOS Package Editor befindet sich rechts auf dem vertikalen Panel im PowerShell ISE. Sollte es nicht zu sehen sein, muss man es im Add-On Dateimenü sichtbar machen.

Das Add-On Tool wird automatisch geladen, wenn man das PowerShell ISE startet.

Im Dateimenü unter Add-Ons sieht man den Eintrag zum OS Package Editor.

Erstellen eines neuen PreOS Paketes

Um ein neues PreOS-Paket zu erstellen benötigt man nicht viel. Über die Schaltfläche "New" ist es rasch erledigt. Man erstellt damit eine Struktur für das neue PreOS Paket und muss die Werte Name, Vendor, Version und Description angeben und das Paket mit "Save" abspeichern.

Über die Schaltfläche "New" wird eine neue, leere Paket-Struktur angelegt.

Werte für Name, Vendor, Version und Description angeben.

Über die Schaltfläche "Save" das Paket und damit auch die Paket-Informationen abspeichern.

Beim ersten Speichern öffnet sich der Ordnerauswahl Dialog, damit das Arbeitsverzeichnis, wo das neue Paket gespeichert werden soll, ausgewählt werden kann.

Im ausgewählten Ordner wird die benötigte Ordner-Struktur des neuen Pakets angelegt. Generell besteht ein PreOS-Paket aus einer mehrschichtigen Ordnerstruktur mit zwei fundamentalen Dateien darin. Die Datei EmpirumPackageData.xml enthält alle Informationen zu einem Paket, sowie die zugehörigen Empirum-Variablen und liegt auf der höchsten Ebene - direkt im Paket-Ordner.

Darunter findet man im Ordner Data einen Ordner mit dem Namen des Herstellers (engl. Vendor) - in unserem Beispiel ist es "Matrix42". Unterhalb des Herstellers befindet sich nun der eigentliche PreOS-Paket-Ordner mit dem Namen des Pakets. Dieser und der oberste Ordner haben meistens den gleichen Namen. Hier im Beispiel ist es "WindowsInstallation". Im inneren Paket Ordner befinden sich alle zum Ausführen des Paketes benötigten Dateien, also Massendaten und ein "Install" Ordner.

In diesem Beispiel ist es einer Readme.txt für den Paket-Benutzer, eine unattend.xml für die automatische/unbeaufsichtigte Betriebssystem-Installation und eine EmpirumAgent.bat für die Installation des Matrix42 Empirum Agenten direkt nach der Windows-Installation. Und schließlich findet man im Install Ordner das Bindeglied für alle diese Massendaten und die Paket-Logik an sich, das PowerShell-Skript Install.ps1.

Nach Namenskonvention muss im "Install" Ordner ein Install.ps1 Skript liegen, das zur WinPE-Laufzeit ausgeführt wird. In diesem Fall ist es ein Skript, das auf Empirum-Variablen für den Client-Computer zugreift, die unattend.xml für die Windows-Installation vorbereitet und die Installation durchführt.

Somit erstellt man all das - außer der Massendaten - durch das Abspeichern des neuen Pakets über die Save Schaltfläche. Diese Struktur wird nun im ausgewählten Arbeitsverzeichnis erstellt.

Das von Ihnen neu erstellte Paket muss nach Fertigstellung im Ordner "Configurator$\PackageStore\PreOsPackages" auf dem Empirum Server abgelegt werden, erst danach kann es über die EMC importiert und einem Computer zugeordnet werden.

Es wird, wie man erkennen kann, eine neue UUID für das neue Paket generiert und angezeigt. Alle sichtbaren Paketinformationen können nach dem Speichern noch angepasst und verändert werden. Die Ordner-Struktur des Pakets wird, je nach Änderung, angepasst.

Hat man alle Angaben gemacht, das Arbeitsverzeichnis ausgewählt und das Paket abgespeichert, wird auch die neu erstellte Install.ps1 Datei als neuer Tab im PowerShell ISE Editor geöffnet und kann nun bearbeitet werden. Die ersten Zeilen zum Paket sind darin als Kommentar zu erkennen.

Danach folgt eine grobe Struktur eines PreOS Paket-Skriptes. Generell sollte es aus PowerShell-Funktionen bestehen und einen direkten Aufruf beinhalten. Wie es in den Kommentaren des neuen Skriptes steht, ist es außerdem wichtig, dass ein Exit-Code im Falle eines Fehlers zurückgegeben wird. Der PE-Agent orientiert sich beim Ausführen der PreOS-Pakete daran und erkennt bei einem Exit-Code größer Null ein fehlgeschlagenes Paket.

Wenn kein Exit-Code oder der Code 0 mit dem "Exit" Befehl zurückgegeben wird, dann wird die Ausführung des Paketes als erfolgreich markiert, sogar wenn es zu Fehlern innerhalb des Paketes kommt, die weder behandelt noch abgefangen wurden. Diese kann man immer noch in der Logdatei, die bei der Ausführung geschrieben wird, sehen.

Jedoch wird das Paket in Empirum nicht als fehlgeschlagen markiert und der PE-Agent stoppt nicht die Ausführung, sondern fährt mit den nächsten zugeordneten Paketen fort.

Im Skript des neu erstellten Paketes ist dies als Vorlage umgesetzt: Man sieht eine "Main" Funktion, die etwas umsetzt - die Logik des Paketes. Darin wird ein try-catch-Block benutzt und bei Ausnahme-Fehlern wird im Catch-Block die ebenfalls vorhandene Funktion "ExitWithCodeMessage" mit einem Fehler-Code und einer Nachricht aufgerufen.

In der Funktion selbst sieht man, dass dort die Fehlermeldung mit Write-Error ausgegeben wird (das landet genauso wie die Write-Host-Aufrufe in der Log-Datei bei der Ausführung durch den PE-Agenten) und mit "Exit" der angegeben Error-Code zurückgegeben wird und die Ausführung des Skriptes damit auch endet.

Ganz unten folgt dann der sogenannte Entry-Point oder Einsprungspunkt - dort wird eben die "Main"-Funktion aufgerufen. Damit beginnt das Paket-Skript zu arbeiten. Wie auch immer die Implementierung des Skriptes umgesetzt wird, wichtig ist, dass man Fehler erkennt bzw. behandelt und im Fehlerfall mit "Exit" einen Fehlercode zurückgibt, damit der PE-Agent die Ausführung anhalten kann.

Bei einem fehlgeschlagenen PreOS-Paket wird der PE-Agent einen Neustart des Computers durchführen und mit der Ausführung des fehlgeschlagenen Paketes von Anfang an beginnen. Dies geschieht solange, wie das Paket fehlschlägt.

Der Kreativität und dem Einsatz sind keine Grenzen gesetzt. Alles was auf einem Client zu WinPE-Zeit ausgeführt und in Erfahrung gebracht werden kann, kann im Install.ps1-Skript umgesetzt werden.

Das Install.ps1-Skript kann und soll nun mit den Bord-Mitteln des PowerShell ISE bearbeitet und abgespeichert werden. Es wird jedoch auch abgespeichert, wenn man die Schaltfläche Save des OS Package Editor Add-On Tools betätigt.

In unserem Beispiel haben wir den Desktop-Ordner als Arbeitsverzeichnis ausgewählt und ein PreOS-Paket Namens SamplePreOsPackage erstellt.

Mit der Schaltfläche "Save To" kann man nun auch eine Kopie des aktuellen PreOS-Paketes erstellen bzw. an einem anderen Ort abspeichern.

Betätig man "Save To", wird der Browserauswahl-Dialog angezeigt und das neue (Ziel-) Arbeitsverzeichnis muss ausgewählt werden. Das Original bleibt hierbei als Kopie an seiner aktuellen Stelle.

Öffnen eines bestehenden PreOS Paketes

PreOS-Pakete lassen sich zur Bearbeitung oder auch nur zur Ansicht öffnen. Im OS Package Editor erreicht man das über die Schaltfläche "Open".

Im Matrix42 PreOS Editor können nur PreOS Pakete geöffnet werden, die im Import/Export Format vorliegen
(Standard Ablageort: Configurator$\PackageStore\PreOsPackages). In diesem Ordner liegen die PreOS Pakete im richtigen Format vor.

Nach dem Import eines PreOS Paketes hat sich die Struktur des Paketes geändert, dadurch kann es nicht mehr aus dem Unterverzeichnis "Configurator$\Packages\" geöffnet werden (Fehlermeldung).

Dabei muss man die entsprechende EmpirumPackageData.xml eines PreOS-Paketes auswählen und mit OK bestätigen.

Daraufhin werden die Informationen des Paketes - die Metadaten - in der Maske angezeigt und das Install.ps1-Skript ist zum Bearbeiten im ISE-Editor geöffnet.

Ändern der Paket-Informationen

Es kann der Paket-Name, der Vendor (Hersteller), die Version und die Paket-Description (Beschreibung) geändert werden. In den entsprechenden Eingabefeldern können die Änderungen durchgeführt werden.

Speichern der Änderungen der Paket-Informationen

Über die Schaltfläche "Save" speichert man die Änderungen der Paketinformationen ab. Da sich die Paket-Informationen Name, Vendor und Version in der Ordnerstruktur spiegeln, werden beim Ändern der Informationen Ordner umbenannt bzw. verschoben. Eventuelle Massendaten werden mit verschoben. Informationen wie Description oder UUID sind dagegen in der EmpirumPackageData.xml hinterlegt.

Speichern einer Kopie

Über die Schaltfläche "Save As" speichert man das aktuelle Paket (zusammen mit den durchgeführten Änderungen) entweder an einer anderen Stelle, indem man einen anderen Zielordner auswählt, oder unter einem anderen Namen, falls man den Namen des Paketes verändert hat, ab.

Beim Letzteren kann man sowohl im gleichen Ordner neben dem Original Paket die Kopie mit einem anderen Namen als auch die Kopie in einem anderen Verzeichnis ablegen.
Werden weder der Name noch die Version eines Paketes verändert und mit "Save As" in das gleiche Verzeichnis, in dem das Original liegt, gespeichert, wird das Original überschrieben. Beim "Save As" wird eine neue UUID erzeugt und somit wird die Kopie im Sinne von Empirum zu einem eigenen, neuen Software Paket, das importiert werden kann.

Bearbeiten des Paket-Skriptes

Beim Öffnen oder Erstellen eines neuen PreOS-Paketes wird das Steuerungsskript "Install.ps1" in einem neuen Tab im ISE geöffnet. Beim neuen Paket ist dieses Skript leer und enthält allein die Paket-Informationen im Kopf als PowerShell-Kommentare.

Ein Paket-Ersteller kann nun das Skript ganz nach Bedarf implementieren und die nativen Tools des PowerShell ISE dabei verwenden.

Command-Add-on anzeigen

Fall das Command Add-on beim Öffnen des PowerShell ISE nicht zu sehen ist, muss man es sich zuerst anzeigen lassen. Im Dateimenü unter View kann man dies durch das Anhaken von "Befehls-Add-On anzeigen" (Show Command Add-on) erreichen.

Hat man das Command-Add-on unter View aktiviert, ist es unter Umständen immer noch nicht sichtbar. Man muss also noch den Bereich für vertikale Add-On-Tools aktivieren.

Im Dateimenü unter Add-Ons muss dafür der Eintrag Bereich für vertikale Add-On-Tools anzeigen (Show Vertical Add-on Tools Pane) angehakt werden. Damit wird die vertikale Leiste für Add-Ons geöffnet und das Command-Add-On ist zu sehen.

Empirum OS Management CMDLets

Das mit PowerShell ISE mitgelieferte Add-On "Befehle" (Command) wird mit der Installation des OS Package Editors um die Liste der Empirum CMDLets erweitert. Das Modul Matrix42.Empirum.PowerShell.OsManagement ist damit registriert und auswählbar.

Um die Empirum-CMDLets anzuzeigen, wählt man das Modul Matrix42.Empirum.PowerShell.OsManagement (1) aus. Die Hilfe zum jeweils ausgewählten CMDLet (2) kann man sich über das Fragezeichen Symbol (3) anzeigen lassen.

Um sich mehr Details (4) zu den CMDLets anzeigen zu lassen, muss man zuerst einmal auf die Schaltfläche "Details anzeigen"(Show Details) klicken.

Damit lassen sich die Parameter und Switches zu den CMDLets anzeigen und setzen.

Hat man die Werte für die benötigten Parameter oder Switches gesetzt, so lässt sich mit "Einfügen" (Insert) der komplette Befehl in die Konsole übertragen.

Dieser Befehl lässt sich zunächst nicht erfolgreich ausführen, da die CMDLets eine gewisse Umgebung voraussetzen. Damit ist das Debuggen in der Umgebung aktuell nicht möglich.

Beim Ausführen von irreversiblen Kommandos: mit Set-EmpirumReboot kann man zum Beispiel ein Reboot des ausführenden Systems hervorrufen, ohne dass das gewollt ist. Führt man etwa das DiskPartitioning-Paket aus, könnte man ungewollt die Festplatte des ausführenden Systems neu partitionieren. Vorsicht ist angebracht.

Hier im Beispiel rufen wir das Get-EmpirumVariable-CMDLet (1) mit dem Property "FQDN" (2) auf.

Über die Schaltfläche Einfügen (3) kann man den Befehl, inklusive Property, in die Konsole (4) einfügen.

Hat man einen Befehl, den man in seinem Skript verwenden möchte, zusammengestellt und erfolgreich ausführen können, kopiert man diesen aus der Konsole in den Editor durch Markieren, Kopieren und Einfügen (5).

Alternativ kann man direkt auf die Schaltfläche Kopieren (Copy) (3) klicken und sich den Befehl in die Zwischenablage ablegen lassen, um diesen dann an eine gewünschte Stelle im Skript - das im Editor geöffnet ist - zu kopieren (5).

In der PowerShell-Konsole kann man sich mit 'Get-Help <CMDLet-Name> -Full' die Benötigte Syntax und eventuell auch Beispiele anzeigen lassen.

Get-EmpirumPackagePath

Get-EmpirumPackagePath-CmdLet gibt den vollen Pfad zu einem gegebenen Paket an. Wobei das Paket ein 'OS Software Package', oder eine 'OS Package Source' sein kann. Der Standard-Paket-Typ ist 'OS Package Source'.

Im Beispiel wird der Pfad zu dem GettingStarted OS-Software-Paket generiert:

Get-EmpirumPackagePath -RelativePath 'Matrix42\OsPackages\GettingStarted\Install' -Type OsSoftwarePackage

Das Get-EmpirumPackagePath-CmdLet bietet einen zusätzlichen Schalter -IncludeOfflineSources. Wird dieser Schalter verwendet, wird das CmdLet zunächst prüfen, ob der angegebene relative Pfad im lokalen Offline Source Verzeichnis vorhanden ist und gegebenenfalls diesen zurückgeben.

Ein lokales Offline Source Verzeichnis kann aktuell mit Hilfe des Offline Boot Medium-Assistenten auf Offline Boot Medien integriert werden.

Get-EmpirumAgentSetting

Get-EmpirumAgentSetting-CmdLet gibt den Namen des zugeordneten Empirum Servers, den Benutzernamen, das Passwort oder das Protokoll, die zum Herstellen einer Verbindung notwendig sind zurück (mit dem Parameter Set 'DepotServer').

Get-EmpirumAgentSetting -DepotServer Name

Get-EmpirumAgentSetting -DepotServer LogonUser

Get-EmpirumAgentSetting -DepotServer LogonPassword

Get-EmpirumAgentSetting -DepotServer Protocol

Und mit dem Parameter Set 'PeAgentConfig' lässt sich der Pfad zu dem Ordner auf dem Server-Share ausgeben, der für Logs verwendet wird - das MAC8- oder UUID-Verzeichnis (RemoteLogFolder). Außerdem kann das Timeout für PreOS-Paket-Skripte (PowerShellTimeoutInSeconds) und der Zustand des PXE-Off-Verhaltens abgefragt werden (EnableFinalPxeOff).

Get-EmpirumAgentSetting -PeAgentConfig RemoteLogFolder

Get-EmpirumAgentSetting -PeAgentConfig PowerShellTimeoutInSeconds

Get-EmpirumAgentSetting -PeAgentConfig EnableFinalPxeOff

Get-EmpirumVariable

Gibt eine Eigenschaft eines Computers, oder den Wert einer Zugeordneten Empirum Variable zurück. Beispiele für Computer Eigenschaften sind etwa Computer-Name, Domäne oder MAC-Adresse - ein Beispiel für eine Variable ist etwa FQDN.

Get-EmpirumVariable -Property ComputerName

Send-EmpirumMessage

Verschickt PXE-Log-Nachrichten an den Empirum Server aus dem ausgeführten PreOS-Paket (mit oder ohne PxeLog-Parameter), setzt eine spezielle Nachricht ab, um nach einer Formatierung bzw. Partitionierung den Status der zuvor installierten Software-Pakete zurück zu setzen (HardDiskFormattingOrPartitioningSuccessful), oder eine PXE-Off-Nachricht, um die PXE-Aktivierung für den aktuellen Client auf dem Server zu deaktivieren (TurnOffPxeActivation).

Send-EmpirumMessage "Starting PreOS package execution..."

Send-EmpirumMessage -PxeLog "Starting PreOS package execution..."

Send-EmpirumMessage -HardDiskFormattingOrPartitioningSuccessful

Send-EmpirumMessage -TurnOffPxeActivation

Set-EmpirumAgentSetting

Kann verwendet werden, um Konfigurationseigenschaften des PE-Agenten zu verändern.

Etwa das Rebootverhalten des PE-Agenten (ist standardmäßig aktiviert):

Set-EmpirumAgentSetting -RebootOption DisableReboot

Set-EmpirumAgentSetting -RebootOption EnableReboot

Oder das PXE-Off-Verhalten des PE-Agenten (ist standardmäßig aktiviert):

Set-EmpirumAgentSetting -FinalPxeOff DisablePxeOff

Set-EmpirumAgentSetting -FinalPxeOff EnablePxeOff

Set-EmpirumReboot

Setzt den Reboot-Status eines Pakets. Hierbei kann das Neustarten eines Clients gesteuert oder angemeldet werden. Mögliche Status sind "NoRebootNeeded", "RebootNeeded", "RebootNeededImmediately", "RebootInitializedByOsPackage" oder "RestartAfterReboot".

"RebootNeededImmediately" etwa weist den PE-Agent an, nach der Ausführung des laufenden Paketes, einen Neustart durchzuführen.

Set-EmpirumReboot RebootNeededImmediately

"RestartAfterReboot" weist den PE-Agent an, nach der Ausführung des laufenden Paketes, einen Neustart durchzuführen und nach dem Neustart das gleiche Paket erneut zu starten.

Set-EmpirumReboot RestartAfterReboot

Add-EmpirumComputer

Fügt den lokalen Client zu einer Domäne oder einer Workgroup hinzu. Nimmt ein SYNC verschlüsseltes Passwort entgegen. Eine Organisational Unit kann ebenfalls mit angegeben werden.

Den Client einer Domäne hinzufügen:

Add-EmpirumComputer -User imagoverum\vvalentine -Password D4964E973C866C6CD0E12DE0621A435404E5D485D175B97CEB7ADECDA2D785595DA3515941D8E49C -Domain imagoverum.de

Den Client einer Domäne mit einer OU hinzufügen:

Add-EmpirumComputer -User imagoverum\vvalentine -Password D4964E973C866C6CD0E12DE0621A435404E5D485D175B97CEB7ADECDA2D785595DA3515941D8E49C -Domain imagoverum.de -OU "OU=OU1,DC=imagoverum,DC=de"

Den Client einer Workgroup hinzufügen (lokaler Benutzer mit Password im Klartext):

Add-EmpirumComputer -User "LocalUser" -Password "Password in Clear Text" -Domain "Workgroup" -JoinWorkgroup

Set-EmpirumPartitionInformation

Setzt die angegebene UUID für die Partition, welche über den angegebenen Laufwerksbuchstaben (DriveLetter) zu erreichen ist.

Hier im Beispiel wird für die Partition, die unter dem Laufwerksbuchstaben X zu erreichen ist, der Identifier (UUID) auf "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" gesetzt.

Set-EmpirumPartitionInformation -DriveLetter "X" -Uuid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

Hinzufügen von Paket-Variablen

Zu jedem PreOS-Paket können Empirum-Variablen hinzugefügt werden. Variablen bereits existierender Pakete können angezeigt und entfernt werden. Hierzu muss man auf das Register "Variables" wechseln.

Zum Löschen wählt man eine Variablendefinition und klickt auf "Delete". Im Editor werden im Moment nur die Typen Text, Number und Password unterstützt.

Klickt man auf "Add", öffnet sich ein Fenster, in dem man die neue Variablen Definition eintragen und dem Paket - über Add - hinzufügen kann.

Die so erstellten Variablen werden beim Import des PreOS-Pakets mit importiert und können auf Gruppen generell, oder auf Computern, denen das PreOS-Paket zugewiesen ist, in der Matrix42 Management Console gesetzt werden.

Verwendung von Paket-Variablen im Skript

Öffnet man ein OS-Paket, werden die zugehörigen Paket-Variablen unter dem Register 'Variables' aufgelistet. Am Beispiel des GettingStarted-Pakets wird hier demonstriert, wie man diese Variablen zum Install.ps1-Skript hinzufügen kann. Innerhalb der OS-Pakete werden die zugeordneten Empirum-Variablen über das CMDLet 'Get-EmpirumVariable' abgefragt. Das Gleiche gilt für Paket-Variablen, die per OS-Paket importiert werden.

Um die Variablen-Abfrage an die richtige Position im Skript (links) zu platzieren, muss man zuerst den Cursor in der gewünschten Zeile positionieren. Hier im Beispiel ist es die Zeile 7. Nun hat man entweder die Möglichkeit, rechts auf die gewünschte Variable doppelt zu klicken, oder diese mit einem einfachen Klick zunächst auszuwählen und dann die 'Snip It' Schaltfläche zu verwenden. Das Ergebnis ist identisch.

Einerseits wird das benötigte Code-Schnipsel, das es ermöglicht, die Variable zur Laufzeit abzufragen, in der ausgewählten Zeile im Skript eingefügt, anderseits wird der gleiche Schnipsel auch in die Konsole unten eingefügt, um die Ausführung direkt mal ausprobieren zu können. Darüber hinaus wird der Code-Schnipsel auch in die Zwischenablage kopiert und kann beliebig oft und an beliebiger Stelle im Skript mit STRG+V aus der Zwischenablage eingefügt werden.

Hier im Beispiel wird die Variable namens TextVar vom Typ Text in die siebte Zeile des Skripts per Doppelklick eingefügt. Als Variablenname innerhalb des Skriptes wird initial der Name der Variable selbst verwendet. Hier ist es '$TextVar'. Unten in der Konsole sieht man zudem das gleiche Code-Schnipsel.

$TextVar = Get-EmpirumVariable -Property GettingStarted.TextVar

Zusätzlich fügen wir hier im Beispiel noch eine Variable vom Typ Password ein - hier trägt die Paketvariable den Namen Password und wird als Variable $Password im Skript initialisiert.

$Password = Get-EmpirumVariable -Property GettingStarted.Password -Decrypt

Bei einer Passwort Variablen wird zusätzlich der Switch '-Decrypt' verwendet, um das Password im Klartext auszugeben. Hierbei handelt es sich um die entschlüsselte SYNC-Variante des Passwords. Möchte man die verschlüsselte Darstellung einer Passwort Variablen, muss man den Postfix '_SYNC' an den Namen der Variable hängen - ohne den '-Decrypt'-Switch.

$Password = Get-EmpirumVariable -Property GettingStarted.Password_SYNC

Speichern der Änderungen des Paket-Skripts

Das Install.ps1-Skript ist im Rahmen des PowerShell ISE geöffnet und Änderungen können über Menü > Datei ordentlich gespeichert werden. Zusätzlich werden die Änderungen am Skript auch über die Save Schaltfläche des Add-On Tools gespeichert.

Hinzufügen von zusätzlichen Dateien

Erstellt man ein neues Paket, befindet sich initial nur ein Install.ps1-Skript in einem Install Ordner. Man kann allerdings noch weitere Dateien dem Paket hinzufügen, auf die dann auch während der Ausführung des Pakets zugriffen werden kann. Wenn man weitere Dateien ins Paket einbinden möchte, kann man das unter dem Register "Files" vornehmen.

Solange Sie ein neu erstelltes Matrix42 PreOS Paket noch nicht gespeichert haben, ist es nicht möglich, zusätzliche Dateien hinzuzufügen - die Baumstruktur der zusätzlichen Dateien bleibt leer. Erst nach dem Speichern wird die Dateistruktur für die Massendaten des Pakets erstellt und es können zusätzliche Dateien hinzugefügt werden.

Symboldefinition:

Hauptknoten, der das Paketverzeichnis im Massendatenverzeichnis repräsentiert (z.B. Data\Matrix42\OsPackages\WindowsInstallation\3.4). Die untergeordneten zusätzlichen Dateien werden beim Importieren des PreOS Pakets ebenfalls in die entsprechende Configurator$-Freigabe kopiert und stehen während der Paketausführung zur Verfügung.

Zusätzlicher Ordner

Zusätzliche Datei

Nicht löschbare zusätzliche Dateien oder Ordner. Sie sind wesentlicher Bestandteil des PreOS Pakets und dürfen nicht gelöscht werden.

Hier werden die bereits vorhandenen Dateien in einer Baum-Struktur aufgelistet. Über die Schaltfläche "Add" kann man weitere Dateien (keine Ordner) zum Paket hinzufügen. In den meisten ausgelieferten Paketen sieht man dort die Readme.txt Datei und den Install Ordner mit dem Install.ps1-Skript darunter. Diese sind mit einem blauen Schloss-Symbol hinterlegt. Das bedeutet, sie können nicht gelöscht werden und es dürfen zum Install Ordner keine weiteren Dateien hinzugefügt werden. Des Weiteren kann man unterhalb des Install Ordners auch keine weiteren Ordner anlegen.

Zum Löschen einer Datei oder Verzeichnisses, wählt man zunächst die Datei oder das Verzeichnis in der Baumstruktur aus und verwendet dann die Schaltfläche Delete.

Möchte man neue Unterordner anlegen, kann man das über die Schaltfläche "New Folder" auf der rechten Seite durchführen. Dabei wird zunächst ein neuer Unterordner in dem auswählten Verzeichnis mit dem Namen "New Folder" angelegt, der im Anschluss umbenannt werden kann.

Zum Anlegen eines Unterordners auf der obersten Eben, muss man den Hauptknoten auswählen und dann die Schaltfläche "New Folder" verwenden.

Dateien werden direkt hinzugefügt und beim Löschen nach einer Bestätigung direkt gelöscht - man muss das Paket danach nicht gesondert speichern.

HTTP(S) Unterstützung bei selbsterstellten PreOS Paketen

Eventuell sind selbst erstellte PreOS Pakete nicht sofort für den http(s) Transport geeignet. Der Grund dafür ist meistens, dass in den PowerShell-Skripten auf Dateien oder Verzeichnisse auf den Empirum-Share im SMB Fall zugegriffen werden, die nicht Teil des PreOS Paketes selbst sind.

Um die Anpassungen zu erleichtern, soll an dieser Stelle auf bestimmte Eigenheiten beim http(s) Transfer eingegangen werden.

Generell wird im http(s) Fall mit lokalem Cache gearbeitet. Dateien und Verzeichnisse werden von der Empirum-Freigabe über http(s) in lokale Verzeichnisse transferiert. Es werden nicht alle Freigaben automatisch transferiert, sondern nur Verzeichnisse und Dateien, die angefragt werden.

Im http(s) Fall wird vor der Ausführung des PreOS Paketes, der Inhalt des Paketes (z.B. wird im Fall des WindowsInstallation PreOS Paketes das Verzeichnis Configurator$\Packages\Matrix42\OsPackages\WindowsInstallation\5.0) zunächst lokal in ein Cache-Verzeichnis übertragen und im Anschluss das install.ps1 Skript lokal ausgeführt. Relative Zugriffe auf Dateien, die sich im Paket befinden, sind somit abgedeckt.

Muss in einem PreOS Paket auf Dateien zugegriffen werden, die nicht in dem Paketverzeichnis vorhanden sind, muss dies über das Cmdlet Get-EmpirumPackagePath stattfinden. Die Methode wurde bereits in der Vergangenheit verwendet, um den Pfad auf die Empirum-Freigabe (oder das Offline Medium) zu bekommen. Diese Methode muss im http(s) Fall die angegebene Datei oder das Verzeichnis zunächst lokal in ein Cache-Verzeichnis übertragen und im Anschluss den lokalen Pfad zurückgeben. Das PreOS Paket kann somit mit dem lokalen Pfad weiterarbeiten und auf die Datei oder das Verzeichnis zugreifen.

Das Cmdlet Get-EmpirumAgentSetting -PeAgentConfig RemoteLogFolder kann im http(s) nicht verwendet werden, um Log-Dateien auf der Empirum-Freigabe zu ändern. Für diese Zwecke wird das neue Cmdlet Get-EmpirumTransfer zur Verfügung gestellt. Mit dem Aufruf Get-EmpirumTransfer LogFolder -Type RemoteLogFolder, kann vergleichbar dem Get-EmpirumPackagePath Aufruf, das EmpInst$\Wizard\OS\WinPeStatus Unterverzeichnis lokal transferiert werden. Die Methode gibt ein Objekt zurück, mit dessen Hilfe über die Path-Eigenschaft auf den Pfad zum lokalen Cache zugegriffen werden kann. Das PreOS Skript kann nach den Anpassungen der Dateien im Cache das Synchronisieren der lokalen Dateien zum Server über die Methode Sync veranlassen. Dabei werden die lokalen Änderungen auf den Server übertragen.

Hier ein Beispiel aus dem HardwareInfo PreOS Paket:

$RemoteFolderObject = Get-EmpirumTransfer LogFolder -Type RemoteLogFolder -Verbose;

…

CreateAndCopyDriverJson $RemoteFolderObject.Path;

$RemoteFolderObject.Sync();