使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

通过补丁管理器在 EC2 Windows 实例上成功执行修补操作后,如何解决缺少的 KB 补丁?

2 分钟阅读
0

我想通过补丁管理器(AWS Systems Manager 的一项功能)对我的 Amazon Elastic Compute Cloud(Amazon EC2)Windows 实例上缺少的补丁进行故障排除。

简短描述

以下情况是补丁可能缺失的最常见原因:

  • 该补丁不适用于实例操作系统类型。
  • Microsoft 知识库(KB)包的详细信息与基准配置不匹配。
  • 后来的补丁已经发布。
  • 该补丁在 Windows Server Update Services(WSUS)发布频道中不可用。
  • 补丁已安装在实例上。

解决方法

该补丁不适用于实例操作系统类型

要检查补丁是否适用于实例,请完成以下步骤:

  1. 打开 Microsoft 更新目录
  2. 使用补丁 ID 搜索 Microsoft 知识库文章 ID。补丁 ID 示例: KB3216916。
  3. 产品下,检查这些值是否与您的托管节点的值相匹配。
  4. 你可以从系统设置(来自 Microsoft 网站)中看到托管节点的产品名称。

KB 包的详细信息与基准配置不匹配

要检查 KB 分类、严重性和发布日期是否与基准配置相匹配,请完成以下步骤:

  1. 打开 AWS Systems Manager 控制台
  2. 在导航窗格中的节点管理下,选择运行命令
  3. 选择命令历史记录 选项卡。
  4. 选择用于修补的 命令 ID,然后选择托管节点。
  5. 选择输出,然后在基线参数中查看配置。

分类、严重性和批准延迟日期必须与 Microsoft 更新目录中的包详细信息相匹配。如果您使用的是默认补丁基准并且补丁分类与基准不同,则必须创建自定义补丁基准

使用以下方法之一检查特定 KB 是否在补丁基准中获得批准:

**注意:**要运行以下命令,请在本地计算机或 EC2 实例上安装最新的 AWS 命令行界面(AWS CLI)AWS Tools for PowerShell

describe-effective-patches-for-patch-baseline AWS CLI 命令

要检查补丁基准中某个特定 KB 是否获得批准,请运行 describe-effective-patches-for-patch-baseline 命令。

以下示例命令检查 KB2124261 是否在补丁基准 pb-abdce123456789fgh 中获得批准:

aws ssm describe-effective-patches-for-patch-baseline --baseline-id pb-abdce123456789fgh --query "EffectivePatches[][Patch][?KbNumber=='KB2124261'][]"

GetDeployablePatchSnapshotForInstance API

您也可以使用 GetDeployablePatchSnapshotForInstance API 来生成快照。以下示例 PowerShell 命令将快照文件下载到用户桌面:

注意: 使用从附加的 IAM 实例配置文件中代入的凭证,从目标 EC2 实例运行以下 PowerShell 命令。如果您没有使用附加的 IAM 实例配置文件从目标 EC2 实例运行命令,则可能会收到无效的令牌请求错误。

$instanceId = Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id
$snap = Get-SSMDeployablePatchSnapshotForInstance -SnapshotId '521c3536-930c-4aa9-950e-01234567abcd' -InstanceId $instanceId -Verbose
(New-Object Net.WebClient).DownloadFile($snap.SnapshotDownloadUrl, "$env:UserProfile\Desktop\01-snapshot.json")

**注意:**您可以将快照 ID 替换为任何 GUID。使用 New-GUID 命令从 PowerShell 生成快照 ID 替换文件。

后来的补丁已经发布

要检查是否发布了新补丁,请完成以下步骤。

  1. 打开 Microsoft 更新目录
  2. 使用补丁 ID 搜索 Microsoft 知识库文章 ID。补丁 ID 示例: KB5015808。
  3. 产品下,检查该值是否与您的托管节点的值相匹配。然后,选择相应的标题以打开新的更新详细信息窗口。
  4. 选择包详细信息选项卡。然后,在此更新已被以下更新取代下,检查是否有新的补丁。

该补丁在 WSUS 发布频道中不可用

在 Microsoft Windows 操作系统上,补丁管理器检索 Microsoft 发布到 Microsoft 更新并自动提供给 WSUS 的可用更新列表。如果该补丁在 WSUS 发布频道中不可用,则补丁管理器不会选择该特定补丁。

要验证补丁的可用性,请完成以下步骤:

  1. 打开 Microsoft 更新目录
  2. 使用补丁 ID 搜索 Microsoft 知识库文章 ID。补丁 ID 示例: KB5015808。
  3. 更多信息下,选择支持文章。例如,参见 2022 年 7 月 12 日—KB5015808(OS 内部版本 14393.5246)
  4. 在 Microsoft 支持文章中,找到发布频道部分。然后,在 Windows Server Update Services(WSUS)发布频道下检查补丁是否可用。

补丁已安装在实例上

实例上可能已经安装了补丁,例如通过手动修补安装补丁。要检查补丁是否已安装在实例上,请使用以下方法之一:

Windows 更新操作系统日志

您可通过 Get-Hotfix PowerShell 命令或使用 PSWindowsUpdate 模块获取已安装的更新列表。以下示例命令使用 PSWindowsUpdate 模块。该命令将 WindowsUpdates.txt 文件下载到您的桌面。

Install-Module PSWindowsUpdate
Get-WUHistory | ForEach-Object { new-object psobject -Property @{Date = $_.Date; KB = $_.KB; Title = ($_ | Select-Object -ExpandProperty Title) } } | Out-File $env:UserProfile\Desktop\WindowsUpdates.txt

Fleet Manager 控制台

您可以使用 Fleet Manager(AWS Systems Manager 的一项功能)来检查补丁是否已安装在实例上。要使用 Fleet Manager 控制台,请完成以下步骤:

  1. 打开 AWS Systems Manager 控制台
  2. 在导航窗格中,选择 Fleet Manager
  3. 选择托管节点,然后选择节点概述
  4. 补丁下,搜索缺失的 KB。

describe-instance-patches AWS CLI 命令

要检查补丁是否以编程方式安装,请运行 describe-instance-patch 命令。

以下示例 AWS CLI 命令会搜索 KB4521862

aws ssm describe-instance-patches --instance-id "i-0b806abcdef12345" --filters "Key=KBId,Values=KB4521862"
AWS 官方
AWS 官方已更新 2 年前