Ich verwende eine SCCM 2012-Anwendungsbereitstellung, um Software zu installieren. Der spezifische Installationstyp ist ein Skriptinstallationsprogramm, da SCCM aufgrund von Exe-Validierungsfehlern immer wieder fehlschlug. Das Skript ist Powershell und installiert die Software erfolgreich, auch wenn sie von SCCM ausgeführt wird.
Das Problem ist, dass SCCM nur die Rückgabe von 0 nach Abschluss des Skripts sieht. Ich habe versucht write-host
, return
, write-output
, und nur eine Position mit dem Code für einen weichen Neustart. Keiner von ihnen scheint von SCCM gelesen zu werden, da das App-Ausführungsprotokoll eine Rückgabe von 0 erfasst.
Wie geben Sie Rückkehrcodes von Powershell aus, damit SCCM sie interpretieren kann?
powershell
scripting
sccm
sccm-2012-r2
Colyn1337
quelle
quelle
exit 1
am Ende des PowerShell-Skripts versucht ?exit
ist eincmd
eingebauter. In anderen Bereitstellungssystemen habe ich gesehen, dass .ps1-Dateien mitstart
oder ausgeführt werdencmd /c powershell.exe somefile.ps1
. Entschuldigung für das Spitballing ohne Zugriff auf einen SCCM-Test.Antworten:
Es gibt ein bekanntes Problem mit Powershell-Exit-Codes (siehe Ende dieser Antwort), das sich bei Verwendung von Powershell-Installationsskripten mit SCCM manifestieren kann. Um das Problem zu umgehen, ergreife ich zwei Maßnahmen:
powershell.exe
expliziten Aufruf ausführt .[System.Environment]::Exit()
.Mit diesen beiden Maßnahmen hatte ich kein Problem mit Exit-Codes. Dies ist ein großer Gewinn, da die Fehlerbehebung bei Exit-Codes von Installationsskripten ein langsamer Prozess ist, da Sie warten müssen, bis der SCCM-Client Ihr Skript für jede Iteration der Fehlerbehebung aufruft.
So sehen die Batchdatei und das Powershell-Skript aus:
Install-Application.bat
Install-Application.ps1
Warum sind Exit-Codes unzuverlässig, wenn SCCM Powershell-Skripte direkt aufruft?
Wir wissen, dass Exit-Codes unzuverlässig sind:
quelle