Estoy usando una implementación de aplicación SCCM 2012 para instalar software. El tipo de instalación específico es un instalador programado, ya que SCCM seguía fallando por errores de validación de exe. El script es PowerShell e instala con éxito el software incluso cuando lo ejecuta SCCM.
El problema es que SCCM solo ve el retorno de 0 desde la finalización del script. He intentado write-host
, return
, write-output
, y sólo un elemento de línea con el código para un reinicio suave. Ninguno de ellos parece ser leído por SCCM ya que el registro de ejecución de la aplicación captura un retorno de 0.
¿Cómo emites códigos de retorno de powershell para que SCCM pueda interpretarlos?
powershell
scripting
sccm
sccm-2012-r2
Colyn1337
fuente
fuente
exit 1
al final del script de PowerShell?exit
es uncmd
incorporado. En otros sistemas de implementación, vi archivos .ps1 ejecutados constart
ocmd /c powershell.exe somefile.ps1
. Perdón por el spitballing sin acceso a una prueba SCCM.Respuestas:
Existe un problema conocido con los códigos de salida de PowerShell (consulte el final de esta respuesta) que puede manifestarse cuando se utilizan secuencias de comandos de instalación de PowerShell con SCCM. Para solucionar el problema, tomo dos medidas:
powershell.exe
explícitamente.[System.Environment]::Exit()
.Con estas dos medidas, no he tenido un problema relacionado con los códigos de salida. Esa es una gran victoria porque la resolución de problemas de los códigos de salida de los scripts de instalación es un proceso lento porque tiene que esperar a que el cliente SCCM invoque su script para cada iteración de solución de problemas.
Este es el aspecto del archivo por lotes y el script de PowerShell:
Install-Application.bat
Install-Application.ps1
¿Por qué los códigos de salida no son confiables cuando SCCM invoca scripts de PowerShell directamente?
Así es como sabemos que los códigos de salida no son confiables:
fuente