Seite 1 von 1

WMI-Abfragen im Win7 postinst.d

Verfasst: 25 Jun 2013, 11:11
von seteqsystems
Hi,

Ich wollte eigentlich im postinst.d ein Script zur Aktualisierung der BIOS-Einstellungen einbauen, was aber daran scheitert, dass WMIC einen kritischen Fehler ausspuckt.

Meine Fragen:
* Verwendet irgendwer erfolgreich WMI-Abfragen im postinst.d ?
* Gibt es im postinst andere verlässliche Möglichkeiten den Hardwaretyp herauszufinden?

Danke & lg

Hier mein Auszug aus dem postinst-log:

Code: Alles auswählen

C:\Windows\system32\oobe>FOR /F "tokens=2 delims==" %A IN ('WMIC csproduct GET Name /VALUE | FIND /I "Name="') DO SET machine=%A 
Knoten - NB00174

FEHLER:

Beschreibung = Kritischer Fehler

Re: WMI-Abfragen im Win7 postinst.d

Verfasst: 25 Jun 2013, 12:54
von uncle_scrooge
Zu 1. Ja. Allerdings bin ich nur mit Server 2008R2 unterwegs
Zu 2. Ad hoc fällt mir nichts ein.

Aber..
Wenn der String im Log wirklich Deine FOR-Schleife ist, kann das nicht funktionieren. (Zumindest tut es das nachweislich auf meinem T530 unter W7 nicht).
a. nutzt Du keine back quotations sondern forward quotations, b. wäre der Parameter usebackq eine gute Idee, c. erschließt sich mir der Sinn des pipings nach find nicht ganz.
Da Du eh schon nach 'Name' filterst, kommt auch nur 'name=irgendwas' aus der WMIC-Abfrage raus. Und da Du auf den zweiten token abhebst, hast Du doch das was Du brauchst?

Re: WMI-Abfragen im Win7 postinst.d

Verfasst: 25 Jun 2013, 13:28
von seteqsystems
Im Log hat er offensichtlich das ^ nicht sauber mitgenommen

Der Code schaut so aus und funktioniert auf meinen HP und Fujitsu-Rechnern prima :)

Code: Alles auswählen

FOR /F "tokens=2 delims==" %%A IN ('WMIC csproduct GET Name /VALUE ^| FIND /I "Name="') DO SET machine=%%A
Das Piping ist wirklich umsonst, da stimme ich dir zu - das hab ich mir ja eigentlich aus einem anderen Script, wo ich mehrere WMI-Values abgreife zusammengebastelt :)

Ich probiers mal in der Zwischenzeit mit:

Code: Alles auswählen

FOR /F "tokens=2 delims==" %%A IN ('WMIC csproduct GET Name /VALUE') DO SET machine=%%A
Danke :)