在用于包部署的 SCCM 中,有一个选项可以强制分配和在注销时安排,还有仅在没有用户登录时部署包的选项。
我想以同样的方式部署软件更新。我没有看到这些设置,所以我假设必须使用一些hack解决方法,我想知道是否有人已经这样做过,正在这样做,或者知道我可以为此做些什么发生。我非常精通 powershell、sccm 和 c#,所以这些方面的任何东西都会很棒。我正在使用 SCCM 2012 SP1 作为参考。
在用于包部署的 SCCM 中,有一个选项可以强制分配和在注销时安排,还有仅在没有用户登录时部署包的选项。
我想以同样的方式部署软件更新。我没有看到这些设置,所以我假设必须使用一些hack解决方法,我想知道是否有人已经这样做过,正在这样做,或者知道我可以为此做些什么发生。我非常精通 powershell、sccm 和 c#,所以这些方面的任何东西都会很棒。我正在使用 SCCM 2012 SP1 作为参考。
在深入了解 SCCM 的 SDK 文档后,我最终所做的是使更新可用但不是强制性的。这会在 root/ccm/clientsdk 命名空间中填充一个名为 CCM_SoftwareUpdate 的 WMI 类,请参见此处。一个简单的查询,例如
将为您提供尚未安装的可用更新。安装更新后,它们最终会从此命名空间中删除,但这需要一些时间。如果您出于某种原因必须停止并重新安装更新,这有助于过滤掉部分安装的更新。msdn 页面有更多关于不同合规状态和评估状态的信息。然后将该更新数组传递给同一命名空间中的 CCM_SoftwareUpdatesManager 类的 InstallUpdates 方法,您可以单独监视更新的进度(这就是为什么我选择将我的更新一个一个地传递给该方法,而不是全部传递给该方法一次。从我所看到的情况来看,一次全部传递它们除了将它们排队并一个一个地安装它们之外并没有真正做太多事情)。
我在 C# 中创建了一个快速而肮脏的 gui(您可以在此处查看),我在组策略中将其设置为注销脚本,因此当它运行时,用户无法退出它,也无法按按钮关闭窗口任何一个。它尽可能接近真实的东西(我们可以控制登录背景,所以我让我的应用程序的背景看起来相同以保持一致性)。
可悲的是,我们可能不会在我们环境中的众多笔记本电脑中采用该解决方案 b/c。没有人愿意关闭他们的笔记本电脑并将其带回家一天,只需要等待一段不确定的时间来安装更新,这在那时似乎是永远的。