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

fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

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

Beitrag 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?
Zuletzt geändert von fredfanatics am 05 Feb 2019, 14:08, insgesamt 1-mal geändert.
Benutzeravatar
koepkek
uib-Team
Beiträge: 253
Registriert: 11 Jan 2012, 11:27

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://uib.de
http://opsi.org
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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.
Benutzeravatar
ThomasT
uib-Team
Beiträge: 529
Registriert: 26 Jun 2013, 12:26

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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?
Kein Support per DM!
_________________________
opsi support - https://www.uib.de/
For productive opsi installations we recommend support contracts.
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag von fredfanatics »

Wird anderweitig gesetzt, die Policy spielt auch gerade keine Rolle...
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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%
Benutzeravatar
wolfbardo
uib-Team
Beiträge: 1354
Registriert: 01 Jul 2008, 12:10

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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


OPSICONF 2024
https://opsi.org/en/opsiconf/

opsi-Basisworkshops:

22. - 25. 04. 2024


opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.

http://www.uib.de
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag von fredfanatics »

Ich weiß, dass ich /64bit probiert hatte, es hat aber am Ergebnis nichts geändert, ggf. teste ich auch nochmal mit sysnative...
Benutzeravatar
ThomasT
uib-Team
Beiträge: 529
Registriert: 26 Jun 2013, 12:26

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag 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.
Kein Support per DM!
_________________________
opsi support - https://www.uib.de/
For productive opsi installations we recommend support contracts.
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: ExecWith Powershell ExitCode immer 1 statt CustomValue

Beitrag von fredfanatics »

Kann man die Signatur bei ExecWith mitgeben?
Antworten