【问题标题】:SCCM not reading the return Code from powershellSCCM 未从 powershell 读取返回代码
【发布时间】:2018-07-30 21:10:37
【问题描述】:

我试图强制重启一段时间(14 天)未重启的机器。我有一个 powershell 脚本,它是从另一个资源中获得的,我对其进行了一些调整以适应我公司的要求。我遇到的问题是 SCCM 没有从 Powershell 读取返回码。这是我到目前为止所拥有的

1- 用于检测 14 天未重新启动的机器的脚本,如果它是真的,那么它将以 3010 代码退出(3010 代码是软重启的 SCCM 行为)
2- 使用以下参数部署到所有客户端的 SCCM 应用程序 - 在包属性中,我设置它来确定基于
的行为 返回码(应该是 3010)

脚本工作正常,除了脚本完成后,我需要 SCCM 2012 来获取退出代码 3010,以便安排重启 PC。能否请你帮忙 。

【问题讨论】:

  • 您能否通过执行历史记录(手动在 regedit 中或使用 roger zanders sccm 客户端中心)验证 sccm 是否确实收到了返回码 3010?我怀疑这与 powershell 没有的问题有关正确传递它的退出代码,而不是 sccm 确实获得 3010 但处理错误的退出代码
  • 如何调用 Powershell 脚本?直接从运行命令。我发现我必须运行 cmd / c 来调用 .bat 文件,该文件又调用 .ps1 文件,因为直接从 Powershell 将错误代码返回到 SCCM 2012 似乎存在错误
  • @Syberdoor : 你能解释一下如何在注册表中检查吗?
  • @SimonB:我尝试了两种方法都没有成功。我使用 bat 文件调用 powershell 脚本以及使用以下 powershell.exe -ExecutionPolicy Bypass ".\Mandatory Reboot.ps1" 直接运行它
  • 试试这个执行脚本的方法,看看你是否得到退出代码:powershell.exe -Command "& { & '.\Mandatory Reboot.ps1'; Exit $LastExitCode }"跨度>

标签: powershell sccm


【解决方案1】:

在 PowerShell 2.0 以及至少 3.0 上,PowerShell 的 -File 参数存在一个错误,因此它不会将退出代码传递回调用进程。在这种情况下,您必须使用此方法获取退出代码:

powershell.exe -Command "& { & '.\Mandatory Reboot.ps1'; Exit $LastExitCode }"

【讨论】:

  • 谢谢 - 我会试一试,告诉你进展如何。
  • @user136700 不幸的是,它没有用,但还是谢谢
  • 你能分享你的脚本吗?
  • 这里是类似于我使用的源脚本(我改变了一些东西 -lasttime reboot ...)github.com/MicksITBlogs/PowerShell/blob/master/…
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多