题 我可以更改WSUS中的更新说明吗?


在每个微软补丁日,我都有大量新的更新,我想批准给我的客户。但是,我不是“批准所有更新并继续”,而是在其知识库文章中收集有关每个更新的信息,以确定这是否是对我们而言的重要更新。

这是一项相当繁琐的任务,因为我必须在客户端的浏览器中键入相应的KB编号并等待加载网页。我想知道为什么Microsoft没有使用WSUS控制面板上的更新描述框来显示真正有用的详细信息。相反,我的所有更新都是:

安装此更新可解决Windows中的问题。有关此更新中包含的问题的完整列表,请参阅相关的Microsoft知识库文章以获取更多信息。安装此项目后,您可能必须重新启动计算机。

我开始考虑一个小的Powershell脚本,它为我添加了必要的信息。但是我在第一步失败了,它正在手动更改更新说明:

PS C:\ Users \ Administrator> $ wsus = Get-WsusServer

PS C:\ Users \ Administrator> $ update = $ wsus.SearchUpdates('KB3013791')

PS C:\ Users \ Administrator> $ update [0] .Description
  安装此更新可解决Windows中的问题。有关此更新中包含的问题的完整列表,请参阅相关的Microsoft知识库文章以获取更多信息。安装此项目后,您可能必须重新启动计算机。

PS C:\ Users \ Administrator> $ update [0] .Description ='“0x00000133”当Windows 8.1或Windows Server 2012 R2中的硬件出现故障时停止错误'

PS C:\ Users \ Administrator> $ update [0] .Description
  “0x00000133”当Windows 8.1或Windows Server 2012 R2中的硬件出现故障时停止错误

PS C:\ Users \ Administrator> $ update = $ wsus.SearchUpdates('KB3013791')

PS C:\ Users \ Administrator> $ update [0] .Description
  安装此更新可解决Windows中的问题。有关此更新中包含的问题的完整列表,请参阅相关的Microsoft知识库文章以获取更多信息。安装此项目后,您可能必须重新启动计算机。

似乎我的更改没有提交到数据库。要么我错过了某种方式 $wsus.SubmitChanges() 或者 $wsus.SearchUpdates() 命令返回'update.Clone()',以便我的更改保存到任何地方。

如何实现更改WSUS更新描述的目标?


10
2017-07-09 08:45




$update[0].Description | Get-Member 你也许可以使用 .Replace() 成员函数,但目前尚不清楚如何处理更改它。你需要以某种方式打电话给 Set() 但我不明白这是怎么回事。 - mortenya
关于SuperUser的一个相关问题询问您可能已经解决了什么:如何获得每个更新的有意义的描述。看起来你已经解决了这个问题,如果你能看看,我会非常感激。 superuser.com/q/878753/99136 - krlmlr
@krlmlr我一定错过了你对这个问题的评论。现在我为这里描述的问题创建了一个实际程序,我在其超级用户页面上发布了上述问题的答案。 - Physikbuddha


答案:


更新

通过使用下面的答案,我创建了一个小工具,可以自动将描述添加到我的WSUS服务器。我决定在Github上发布我的工具,所以请随意尝试测试它。

https://github.com/Physikbuddha/wsus-online-descriptions/releases/latest

Sample screenshot

原始答案

我尝试用Get-Member解决问题,如建议的那样 mortenya 在评论部分,但没有运气。
最后,我最终直接编辑了WSUS数据库来更改描述。

小心!只有在您完全确定自己在做什么时才使用我的解决方案。编辑服务器所依赖的数据库就像对你最好的朋友进行心脏直视手术一样。

我的WSUS安装正在使用 Windows内部数据库 存储更新信息。由于此版本不允许远程查询,因此我不得不使用SQL Server Management Studio的本地安装。
使用上面链接的文章提供的服务器名称连接到数据库。

我可以通过运行此查询来更改更新说明:

UPDATE tbPreComputedLocalizedProperty
SET Description = '"0x00000133" Stop error when there''s faulty hardware in Windows 8.1 or Windows Server 2012 R2'
FROM tbPreComputedLocalizedProperty p
JOIN tbUpdate u ON p.UpdateID = u.UpdateID
JOIN tbRevision r ON u.LocalUpdateID = r.LocalUpdateID
JOIN tbKBArticleForRevision kb ON r.RevisionID = kb.RevisionID
WHERE kb.KBArticleID LIKE '3013791' AND p.ShortLanguage = 'en'
GO

这只是一种手动设置描述的方法,因此我将进一步尝试如何直接从KB网站获取描述并自动应用于所有新更新。我将把这些信息添加到这篇文章中。


6
2017-07-10 13:23



你几乎肯定会标记自己的 回答为已接受。 甚至鼓励自我回答。 - jscott
@jscott感谢您的提示。 - Physikbuddha