在SCCM中进行程序包部署时,可以选择使分配成为必需,并使计划处于注销状态,还可以选择仅在没有用户登录时部署程序包.
我想以相同的方式部署软件更新.我没有看到设置,所以我假设必须使用一些黑客解决方法,我想知道是否有人做过,正在这样做,或者知道我能为此做些什么发生.我非常精通powershell,sccm和c#所以沿着这些方向的任何东西都会很棒.我正在使用SCCM 2012 SP1作为参考.
在深入了解SCCM的SDK文档后,我最终做的是使更新可用但不是强制性的.这将填充root / ccm / clientsdk命名空间中名为CCM_SoftwareUpdate的WMI类,请参阅
here.一个简单的查询,如
"SELECT * FROM CCM_SOFTWAREUPDATE WHERE COMPLIANCESTATE=0 AND EVALUATIONSTATE < 2"
将为您提供尚未安装的可用更新.安装更新后,最终将从此命名空间中删除它们,但这需要一些时间.如果由于某种原因必须停止并重新启动安装更新,则有助于过滤掉部分安装的更新. msdn页面提供了有关不同合规性状态和eval状态的更多信息.然后将该更新数组传递到同一命名空间中的CCM_SoftwareUpdatesManager类的InstallUpdates方法,并且您可以单独监视更新的进度(这就是为什么我选择将我的更新逐个传递给该方法而不是全部在一次.将它们全部传递给所有这些并不会真正做到这一点,除了排队并逐个安装它们之外,我已经看到了它.
我在C#中编写了一个快速而肮脏的gui(你可以查看它here),我将其设置为组策略中的注销脚本,因此当它运行时,用户无法将其删除,或按下按钮关闭窗口无论是.它尽可能接近真实的东西(我们可以控制登录背景,所以我的应用程序的背景看起来一致).
可悲的是,我们可能不会采用我们环境中众多笔记本电脑的解决方案.没有人想关闭他们的笔记本电脑并将其带回家,只需要等待不确定的时间安装更新,这在当时似乎是永远的.