Page 1 of 1

powershell Exit Code wird nicht übergeben

Posted: 13. Aug 2021, 09:55
by SLes
Hallo zusammen,

ich stehe bei einer kleinen Abfrage auf dem Schlauch und bräuchte einen kurzen Gedankenanstoß:
Ziel ist ein Check der aktuellen BIOS-Version.

Code: Select all

;Erfolgscheck auf BIOS-Version
CallHidden powershell -ExecutionPolicy ByPass -command "if((Get-CimInstance win32_bios).SMBIOSBIOSVersion -match "%TargetVersion%") {Return 0} else {Return 1}"
If "%ErrorLevel%" == "1" Then "Set:InstallErrorAfterReboot" else "Set:InstallSuccess" EndIf
Der Code funktioniert in der Powershell. Ich hab auch schon andere Aufrufe, wo der Exitcode sauber übergeben wird.
Ich brauche ja nur ein 0 oder 1 :lol:

In diesem Fall funktioniert das allerdings nicht (getestet, indem ich eine "call Powershell" eingefügt habe, $Lastexitcode ist immer leer). Ich kann es aber auch nachvollziehen, da die richtige Sektion nie angesprochen wird, obwohl die Bedingungen gegen sind.
(anstatt Return habe ich auch schon Exit 0 bzw. Exit 1 ausprobiert)


Ich tippe auf einen ganz dummen Fehler, den ich nur gerade nicht finde. Wie übergebe ich hier den Exit-Code korrekt?
Hat jemand eine Idee?

Re: powershell Exit Code wird nicht übergeben

Posted: 13. Aug 2021, 11:53
by SLes
Lösung:

Ich habe die Falschen Anführungszeichen verwendet. Bei der Übergabe an die Powershell.exe muss man da vorsichtig sein.
So geht es:

Code: Select all

CallHidden powershell -ExecutionPolicy ByPass -command "if((Get-CimInstance win32_bios).SMBIOSBIOSVersion -match '%BIOSVERSION%') {Exit 0} else {Exit 1}"
If "%ErrorLevel%" == "1" Then "Set:InstallErrorAfterReboot" else "Set:InstallSuccess" EndIf