NWC Services Blog
Schemaerweiterungen während der OSD Phase bearbeiten
seit DSM 7.1 gibt es eine neue Möglichkeit, während der OSD Phase über z.B. ein PreOS Action Paket, den Wert einer Schemaerweiterung zu bearbeiten.
Ein Beispiel hierfür ist, den Installationsstatus zu definieren, welcher später für die Reboot Steuerung abgefragt werden kann.
So kann zu Beginn einer Installation der Wert „Grundinstallation“ in eine State Info Schemaerweiterung geschrieben werden. Solange dieser Wert gesetzt ist, kann der Client ohne Rücksicht auf Verluste rebootet werden. Mit dem letzten DSM Paket kann über den Befehl „ModifyObjectProperty“ der Wert auf „Produktiver Client“ gesetzt werden. Somit müssen gewisse Sachen geprüft werden, bevor ein Reboot durchgeführt werden kann.
Wichtig ist hierbei eine State Info Schemaerweiterung zu verwenden. Diese wird durch den DSM Client verwaltet. Managed Info Schemaerweiterungen können hierbei nicht verwendet werden, da diese ausschließlich über die DSMC verwaltet werden.
Damit der Wert aus einem PreOS Action Paket in die Schemaerweiterung geschrieben werden kann, gibt es die Datei „_result.txt“, welche die Aktion erledigt.
Diese wird auch bei den neu Eingeführten „OS Self Service“ Paketen verwendet.
Wenn im Script z.B. folgende Zeile abgesetzt wird, wird der Wert „Grundinstallation“ in die Schemaerweiterung eingetragen. Die Variable darf an dieser Stelle aber nicht in „%“-Zeichen gesetzt werden.
echo CurrentComputer.CustomNWCClientInfo.StagingPhase=Grundinstallation > _result.txt
Beispiel:
Sollten Integer Werte in die Schemaerweiterung geschrieben werden, gibt es ein paar kleine Stolperstellen, welche es zu vermeiden gilt.
Wenn man z.B. folgende Syntax verwendet…
„Echo CurrentComputer.CustomNWCClientInfo.StagingPhase=1>_result.txt“
…steht in der _result.txt folgendes:
„CurrentComputer.CustomNWCClientInfo.StagingPhase=“
…weil die 1 zur Redirection gehört
Wenn man es dagegen mit Leerzeichen trennt, also
„Echo CurrentComputer.CustomNWCClientInfo.StagingPhase=1 >_result.txt“
…dann steht das Leerzeichen mit in der _result.txt.
Workaround:
“Echo CurrentComputer.CustomNWCClientInfo.StagingPhase=1|sort>_result.txt”
Ein Umständliches setzen von Registry Keys, welche dann durch den Client ausgelesen werden, bevor sie per „ModifyObjectProperty“ in die Datenbank geschrieben werden entfällt hierbei komplett.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Kommentare 3
Hallo Michi,
danke für den Tipp.
Zu dem Workaround habe ich noch einen Verbesserungsvorschlag.
Es funktioniert auch so - ohne sort:
(Echo CurrentComputer.CustomNWCClientInfo.StagingPhase=1)>_result.txt
Also den kompletten Ausdruck, der in die Datei geschrieben werden soll in Klammern setzen.
Das funktioniert auch unter WinPE.
Ciao
Klaus
Hallo Michi,
ich habe das erfolgreich unter 7.2.1 mit den Variablentypen String und Optionsliste getestet. Der neue Typ "Bool" funktioniert hier jedoch nicht.
Der Tipp von Klaus ist eine gute und schlanke Alternative. Hätte ich auch vorgeschlagen, war nur ein paar Monate zu langsam. :-)
Gruß
Nils
Update: bool geht doch. Die Werte kann man auslesen und erhält "0" für "falsch" und "1" für "wahr". Beim Setzen muss man allerdings "true" und "false" verwenden:
Echo CurrentComputer.CustomTest.Bool=true >_result.txt
Und wenn man mehrere Werte setzen möchte (für diejenigen, die mit der Kommandozeile nicht so vertraut sind), muss man ab dem zweiten Wert zwei ">"-Zeichen verwenden:
Echo CurrentComputer.CustomTest.Wert1=Wert1 >_result.txt
Echo CurrentComputer.CustomTest.Wert2=Wert2 >>_result.txt
Echo CurrentComputer.CustomTest.Wert3=tWert3 >>_result.txt
Gruß
Nils