J'utilise un SCCM========== Dépantation d'application pour installer le logiciel. Le type d'installation spécifique est le programme d'installation scripté, comme SCCM Ça continue d'échec pour des erreurs de validation exe. Le script est PowerShell et installe avec succès le logiciel même lorsqu'il est exécuté par SCCM.
Le problème est que SCCM ne voit que le retour de 0 à partir de l'achèvement du script. J'ai essayé write-Host
, return
, write-output
, et juste un élément de ligne avec le code pour un redémarrage doux. Aucun d'entre eux ne semble être lu par SCCM lorsque le journal d'exécution de l'application capture un retour de 0.
Comment publiez-vous des codes de retour de PowerShell de sorte que SCCM peut-il les interpréter?
Il existe un problème connu avec les codes de sortie PowerShell (voir la fin de cette réponse) pouvant manifester lors de l'utilisation de scripts d'installation PowerShell avec SCCM. Pour renforcer le problème, je prends deux mesures:
powershell.exe
Explicitement.[System.Environment]::Exit()
.Avec ces deux mesures, je n'ai pas eu de problème lié aux codes de sortie. C'est une énorme victoire car le dépannage des codes de sortie des scripts d'installation est un processus lent, car vous devez attendre le SCCM Client d'appeler votre script pour chaque itération du dépannage.
Voici à quoi ressemble le fichier de lot et le script PowerShell:
Install-Application.bat
powershell.exe .\Install-Application.ps1
exit /b %errorlevel%
Install-Application.ps1
try
{
# do a bunch of installation stuff
if ( $rebootNeeded )
{
[System.Environment]::Exit(3010)
}
[System.Environment]::Exit(0)
}
catch
{
[System.Environment]::Exit(1)
}
Voici comment nous savons que les codes de sortie ne sont pas fiables: