Seite 1 von 2

[gelöst, nicht schön, aber gelöst] ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 24 Jan 2019, 16:33
von fredfanatics
Hallo Forum,

Ich habe folgendes Script:

Code: Alles auswählen


[Actions]
DefVar $exitcode$

ExecWith_getTargetSystem "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
Set $exitcode$ = getlastexitcode
LogError $exitcode$
if ($exitcode$ = "540")
    sub "%SCRIPTPATH%\t540.opsiscript"
endif
if ($exitcode$ = "560")
    sub "%SCRIPTPATH%\t560.opsiscript"
endif


[ExecWith_getTargetSystem]
$system = Get-WMIObject Win32_Computersystem SystemFamily | Select-Object SystemFamily
if ($system.SystemFamily -eq "ThinkPad T540p"){
    [System.Windows.Forms.MessageBox]::Show("Nachricht","Titel",0)
    exit 540
}
if ($system.SystemFamily -eq "ThinkPad T560"){
    exit 560
}
Ein Test ergab, dass der if-Teil mit 540 ordnungsgemäß abgearbeitet wird.
Leider liefert getlastexitcode ständig "1" statt 540/560. Woran liegt das?

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 28 Jan 2019, 15:26
von koepkek
Hi

ich denke dir könnte das aus dem Handbuch weiter helfen:

Code: Alles auswählen

DosInAnIcon_setpolicy
ExecWith_powershell powershell.exe
set $exitcode$ = getLastExitcode
if not ($exitcode$ = "0")
comment "powershell script failed"
endif

[DosInAnIcon_setpolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%

[ExecWith_powershell]
echo "powershell opsi-winst-test"
if ($?) {Exit(0)}
else {Exit(1)}
VG Karsten

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 28 Jan 2019, 18:55
von fredfanatics
Hi, vielen Dank für die Antwort, aber ich denke, ich habe das Handbuch schon verstanden.
Ich brauche nicht 0 oder 1, das Script soll auch keinen Fehler werfen (eine nicht unterstützte Plattform liefert 0)
Ich brauche die angegebenen Werte und erwarte, dass die Exitcodes durchgereicht werden.

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 28 Jan 2019, 19:08
von ThomasT
Das heißt also, deine Systeme laufen die ganze Zeit mit der "unrestricted"/"remotesigned" Execution Policy? Oder setzt du die in einem anderen Produkt?

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 28 Jan 2019, 19:19
von fredfanatics
Wird anderweitig gesetzt, die Policy spielt auch gerade keine Rolle...

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 29 Jan 2019, 09:20
von fredfanatics
Ich hab das jetzt "von hinten durch dir Brust ins Auge" gelöst, indem ich das Powershell-Script als ps1-Datei ausgelagert habe und per DosInsAnIcon aufrufe. Jedenfalls ist seltsam, dass das Script bei "ExecWith" die Fehlercodes nicht durchreicht. Ich notiere mir das mal für den nächsten Workshop...

Code: Alles auswählen

[DosInAnIcon_getmodel]
powershell.exe -ep bypass -file %SCRIPTPATH%\get_model.ps1
exit %ERRORLEVEL%

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 29 Jan 2019, 10:44
von wolfbardo
fredfanatics hat geschrieben:

Code: Alles auswählen


[Actions]
DefVar $exitcode$

ExecWith_getTargetSystem "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
Besser ist in der Regel sysnative mizugeben

Code: Alles auswählen


ExecWith_getTargetSystem "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" /sysnative
probiert?

Gruss
Bardo Wolf

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 29 Jan 2019, 10:50
von fredfanatics
Ich weiß, dass ich /64bit probiert hatte, es hat aber am Ergebnis nichts geändert, ggf. teste ich auch nochmal mit sysnative...

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 29 Jan 2019, 13:59
von ThomasT
fredfanatics hat geschrieben:

Code: Alles auswählen

[DosInAnIcon_getmodel]
powershell.exe -ep bypass -file %SCRIPTPATH%\get_model.ps1
exit %ERRORLEVEL%
Kannst du das gleiche Skript mal bitte mit der Execution Policy ausführen die aktuell gerade auf dem System läuft und nicht mit bypass?
Der ExecWith Aufruf macht nämlich auch nichts anderes, als den Inhalt der Sektion in eine ps1 Datei zu kopieren und diese dann auszuführen.

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Verfasst: 29 Jan 2019, 14:05
von fredfanatics
Kann man die Signatur bei ExecWith mitgeben?