我对检测代码有疑问,并且我倾向于认为这是一个错误。
这是我的脚本:
exit 0
或者
[System.Environment]::Exit(0)
这给了我一个退出代码“0”,stdout 和 stderr 为空。SCCM 应该将该应用程序视为“未安装”。它将其视为“已安装”当然,我的真实脚本更长,但我用它来测试,并没有得到正确的响应。
我的想法是不是倒退了?我发现了多个链接、文章和博客,它们都讨论使用 powershell 作为检测方法,但对我来说不起作用。
有什么提示或想法吗?谢谢,
答案1
SCCM 不支持脚本退出代码。
如果您注意到图表中所示,只要退出代码为非零值,应用程序检测状态即为“未知”。
您需要关注 STDOUT 和 STDERR 这两个输出。只要向控制台写入,就会写入 STDOUT,因此简单的 Write-Host “Installed” 即可。如果您希望脚本在发生错误后继续运行,则可以使用 Write-Error “Failed” 向 STDERR 写入,或者如果您希望脚本停止运行,则可以使用简单的 THROW。
我也花了很长时间才找到这个。尽情享受吧!
(归功于https://david-obrien.net/2013/12/configmgr-powershell-application-detection-methods/供参考)