ich stehe leider etwas auf dem Schlauch.
Powershell-Scripte liefern zwei Arten von Exit-Code:
- Der Exit-Code n, der durch "Exit n " zurückgegeben wird
- Der Exit-Code True/False bzw. 0/1, der den Erfolg/Mißerfolg des ausgeführten Scripts zurückgibt.
Mein unten angehängtes Script liefert mir als ps1-Datei unter der Powershell den ExitCode, den ich angebe.
Unter Winst liefert es mir 0 oder 1 (je nachdem, ob der Exit-Code des Scripts selbst 0 oder Nicht-Null ist), also ob es erfolgreich (0) oder nicht erfolgreich (>0) gelaufen ist.
Ich benötige jedoch den explizit gesetzten ExitCode.
Code: Alles auswählen
[Aktionen]
DefVar $SetupExitCode$
DosInAnIcon_setpolicy
ExecWith_powershell_2008r2 "%System%\WindowsPowerShell\v1.0\powershell.exe" winst /64Bit
set $SetupExitCode$ = getLastExitcode
Switch $SetupExitCode$
Case "0"
comment "ExitCode " + $SetupExitCode$ + ": Alles gut."
EndCase
Case "10"
comment "ExitCode " + $SetupExitCode$ + ": Etwas ist passiert."
EndCase
Case "20"
LogWarning "ExitCode " + $SetupExitCode$ + ": Da könnte was daneben gegangen sein."
Exit /Reboot
EndCase
DefaultCase
LogWarning "PAAAAANIK."
isFatalError
ExitWindows /ImmediateLogout
EndCase
EndSwitch
[DosInAnIcon_setpolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%
[ExecWith_powershell_2008r2]
#############################################
# Aktuellen Maschinennamen ermitteln
#############################################
$Hostname = hostname
#############################################
# Computer umbenennen
#############################################
if ($Hostname -eq "NeuerName") {
Exit 0
}
Else {
$Result = (rename-computer -computername $Hostname -newname NeuerName) 2>&1 | Out-String
if ($Result.Contains('identisch')) {
Exit 10
}
ElseIf ($Result.Contains('Neustart')) {
Exit 20
}
Else {
Exit 200
}
}
Vielen Dank.
Grüße
Patrick