Zum 23.08.2023 ist die NWC Services GmbH zur CANCOM GmbH geworden. Besuchen Sie uns gerne auf www.cancom.de
Toggle Bar

BLOG

BLOGGING CONSULTANTS

NWC Services Blog

Blogs von Consultants der NWC Services GmbH

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.

×
Stay Informed

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.

Runtime Service als Local SYSTEM Konto
Frontrange YouTube Channel

Ähnliche Beiträge

 

Kommentare 3

Klaus Salger (webseite) am Montag, 08. Oktober 2012 13:12

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, 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
Nils Winkler (webseite) am Montag, 11. März 2013 15:59

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

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
Nils Winkler (webseite) am Donnerstag, 14. März 2013 09:03

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

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 [b]>[/b]_result.txt Echo CurrentComputer.CustomTest.Wert2=Wert2 [b]>>[/b]_result.txt Echo CurrentComputer.CustomTest.Wert3=tWert3 [b]>>[/b]_result.txt Gruß Nils
Bereits registriert? Hier einloggen
Montag, 07. Oktober 2024

Sicherheitscode (Captcha)