只有当用户注销时,才能通过SCCM部署更新

在用于软件包部署的SCCM中,可以select强制分配任务,注销时间表,也可以select仅在没有用户login时部署软件包的选项。

我想以相同的方式部署软件更新。 我没有看到设置,所以我假设一些黑客的解决方法必须使用,我想知道是否有人做了这个,做了这个,或者有一个想法,我可以做这个发生。 我非常精通PowerShell,sccm和c#,所以沿着这些线的任何东西都会很棒。 我正在使用SCCM 2012 SP1作为参考。

在深入了解SCCM的SDK文档之后,我所做的是让更新可用, 但不是强制性的 。 这将在root / ccm / clientsdk命名空间中填充名为CCM_SoftwareUpdate的WMI类,请参见此处 。 一个简单的查询,如

"SELECT * FROM CCM_SOFTWAREUPDATE WHERE COMPLIANCESTATE=0 AND EVALUATIONSTATE < 2" 

会为您提供尚未安装的可用更新。 安装更新后,最终将从此命名空间中删除,但需要一些时间。 如果由于某种原因必须停止并重新启动安装更新,则可以筛选出部分安装的更新。 msdn页面有不同的合规状态和eval状态的更多信息。 然后,将该数组更新传递给CCM_SoftwareUpdatesManager类的InstallUpdates方法,并且您可以单独监视更新的进度(这就是为什么我select逐个传递更新到该方法的原因,而不是所有一次,把它们一次性传递,除了排队和逐一安装它们之外,没有什么太大的作用。

我用C#(你可以在这里查看 )快速肮脏的gui,我在组策略中设置了一个注销脚本,所以当它运行时,用户不能再使用它,或者按下buttonclosures窗口无论是。 它和我所能得到的一样接近实际(我们可以控制login背景,所以我使得我的应用程序的背景看起来一致)。

可悲的是我们可能不会在我们的环境中采用众多笔记本电脑的解决scheme。 没有人想closures他们的笔记本电脑,并把它带回家,只能等待无数的时间安装更新,这在当时似乎永远。