我正在尝试找到一种方法来创建 WSUS 更新报告,这些更新已批准用于计算机组 A,但尚未批准用于一个或多个其他组。或者,列出每个更新和每个组的批准状态的表格报告,以便可以对其进行处理以提取我需要的内容。WSUS 本身似乎没有这样的报告,或者至少我找不到这样的报告,因此非常欢迎生成此类报告的脚本。
我正在尝试找到一种方法来创建 WSUS 更新报告,这些更新已批准用于计算机组 A,但尚未批准用于一个或多个其他组。或者,列出每个更新和每个组的批准状态的表格报告,以便可以对其进行处理以提取我需要的内容。WSUS 本身似乎没有这样的报告,或者至少我找不到这样的报告,因此非常欢迎生成此类报告的脚本。
这个 powershell 脚本完全符合您最初的要求。检查一个计算机组并找到未批准一个或多个其他计算机组的更新。
注意 您将需要在 WSUS 服务器或安装了 WSUS 管理工具的计算机上运行它。
配置
设置
$targetComputerGroup
为要用作基线的计算机组 设置$CheckForMissing
为要查看其是否已获批准的一个或多个组的名称。注意:做倍数只是逗号分开(“Group1,Group2”)完成后,您将输出如下输出:
如果您不想输出到屏幕,而是想将列表导出为 CSV,请将底部部分替换为以下代码:
可以“简单地”连接到 WSUS 数据库并对它运行查询:
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
使用Windows 身份验证。这些表格似乎与您的问题有关:
tbUpdate
保存有关单个更新的信息
tbTargetGroup
保存有关所有计算机组的信息
tbDeployment
保存有关已为哪些计算机组批准了哪些更新的信息
但是,利用现有的视图
vUpdateApproval
来检索您需要的大部分信息似乎是有益的,因为该视图已经从其他内容中转换了该ActionID
列。tbDeployment
但是,该
vUpdateApproval
视图不包含任何易于阅读的更新标题。标题通常是从tbLocalizedProperty
. 为了方便我们,还有另一种观点:vUpdate
。我在我们的 WSUS 数据库中确实没有正确的数据来构建适合您的第一个请求的正确查询(而且我没有足够的信心来盲目地构建它)。因此,这是您的次要请求的一种方法。如果我没有搞砸,它会生成所有更新的列表和所有组的批准状态。
在我们的德国 SBS 上产生这个输出:
对于具有 5 个默认组的 SBS,这会在 ~26 秒内生成 121558 个结果行。因此,如果您想尝试查询,建议将第一行更改为
SELECT TOP 1000
while testing。我还花时间将其全部打包到一个 PowerShell 脚本中:
请注意,此脚本包括
SELECT TOP 10
避免在测试期间淹没您的 shell 的限制。