SCCM 中使用 Powershell 检测方法存在的问题

SCCM 中使用 Powershell 检测方法存在的问题

我对检测代码有疑问,并且我倾向于认为这是一个错误。

检测代码输出

这是我的脚本:

exit 0

或者

[System.Environment]::Exit(0)

这给了我一个退出代码“0”,stdout 和 stderr 为空。SCCM 应该将该应用程序视为“未安装”。它将其视为“已安装”当然,我的真实脚本更长,但我用它来测试,并没有得到正确的响应。

我的想法是不是倒退了?我发现了多个链接、文章和博客,它们都讨论使用 powershell 作为检测方法,但对我来说不起作用。

有什么提示或想法吗?谢谢,

答案1

SCCM 不支持脚本退出代码。

SCCM 图表

如果您注意到图表中所示,只要退出代码为非零值,应用程序检测状态即为“未知”。

您需要关注 STDOUT 和 STDERR 这两个输出。只要向控制台写入,就会写入 STDOUT,因此简单的 Write-Host “Installed” 即可。如果您希望脚本在发生错误后继续运行,则可以使用 Write-Error “Failed” 向 STDERR 写入,或者如果您希望脚本停止运行,则可以使用简单的 THROW。

我也花了很长时间才找到这个。尽情享受吧!

(归功于https://david-obrien.net/2013/12/configmgr-powershell-application-detection-methods/供参考)

相关内容