补丁管理是IT基础设施管理的重要方面,就像Windows工作站备份一样重要。通过正确的补丁管理解决方案,您可以通过测试或安装最新的软件更新和补丁来增强系统。补丁被视为在完整软件发布之间现有问题的临时修复。如果有效执行补丁管理,您可以及时解决系统的漏洞并减轻任何潜在威胁。
Windows提供了自己的补丁管理解决方案 – Windows更新。然而,许多IT管理员仍然觉得补丁管理过程太复杂和耗时。此外,系统更新可能会影响您的生产工作流程,因为它们经常在工作时间自动启动。通过PowerShell cmdlet,您可以自动化Windows更新,节省您的时间和精力。
本博文描述了如何使用PowerShell安装Windows更新,并包括一系列有用的PowerShell命令来自动化补丁管理过程。打补丁可以减少影响您系统的错误或漏洞的风险。
PSWindowsUpdate是什么?
要使Windows补丁管理流程顺畅而简单,您可以使用Michal Gajda开发的PSWindowsUpdate模块。该模块是公开可用的,可以从PowerShell Gallery免费下载。主要要求是计算机需要运行从Vista或Windows Server 2008开始的Windows操作系统版本。此外,您需要拥有PowerShell 2.0或更高版本。
使用PSWindowsUpdate,您可以确定计算机是否有可用的Windows更新。此外,该模块允许您在各种Windows服务器和工作站之间集中管理Windows更新。这样,您可以远程控制安装、移除或隐藏哪些更新。
如何使用PowerShell自动化Windows更新
接下来,我们将概述PSWindowsUpdate配置过程,包括如何下载和安装模块,以及如何查找可以帮助您自动化Windows更新的命令。
如何安装PSWindowsUpdate
要有效地自动化Windows补丁管理,您首先需要在计算机上安装PSWindowsUpdate模块。为此,请打开提升的PowerShell提示符,并输入以下命令:
Install-Module -Name PSWindowsUpdate
运行此命令后,将会询问您是否要安装指定的模块来自 PSGallery。如果您希望继续并接受所有更改,请选择 是。
安装了该模块后,您需要确保可以远程访问其他计算机。这样,您应该能够在远程计算机上安装 Windows 更新,从而让您花费最少的时间和精力。为了让 PSWindowsUpdate 模块能够与远程机器一起工作,您需要将该模块保存到您的计算机并通过网络共享出去。
如果其他服务器能够导入和部署此模块,您可以设置自动化的 Windows 补丁管理。为此,您应该运行以下 cmdlet:
Save-Module -Name PSWindowsUpdate -Path
在这里,您需要通过指定希望将 PSWindowsUpdate 模块存储在何处来定义 –Path 参数。
如何使用 PSWindowsUpdate
下一步,您将学习如何使用此模块来使用 PowerShell cmdlet 自动化 Windows 更新。对于需要在没有 GUI 的 Server Core 机器上执行补丁管理过程的 IT 管理员来说,使用这些 cmdlet 是一个很大的优势。通过使用这些 cmdlet,您可以最小化管理复杂性,并使流程更加简单和不易出错。
要获取可用的 Windows 更新的完整列表,请运行以下 PowerShell 命令:
Get-WindowsUpdate
您应该在屏幕上看到以下输出:
有了这些信息,您就可以确定哪些软件或应用程序需要更新。之后,您可以通过输入以下命令安装所有更新。此外,通过添加–AutoReboot 参数,您可以确保系统在安装更新后自动重新启动。
Get-WUInstall -AcceptAll –AutoReboot
如果您不希望重新启动开始(以免中断生产工作流程),您可以运行以下 cmdlet:
Get-WUInstall -AcceptAll –IgnoreReboot
在屏幕上,您可以看到补丁管理过程的进度,以及所有更新的完整列表和它们的当前状态。
安装过程完成后,您将在 PowerShell 控制台中看到以下消息:‘需要重新启动但请手动进行’。因此,您仍需要重新启动系统,但您可以在最适合您的时间进行。
如果您只想下载特定的更新,您可以将–KBArticleID 参数添加到 PowerShell 命令中。不要忘记指定 KB 文章的编号,以下载正确的补丁。例如,我想安装Windows 恶意软件删除工具 x64和Windows Defender 杀毒软件的安全情报更新。适当的 PowerShell 命令应如下所示:
Get-WUInstall -KBArticleID KB890830, KB2267602 -AcceptAll
运行此命令后,我将仅在我的计算机上安装两个更新。
PSWindowsUpdate 命令概述
如果你想知道哪个 PowerShell 命令可以与 PSWindowsUpdate 模块一起使用,你应该输入以下命令并按回车键:
Get-Command -Module PSWindowsUpdate
在这里,你可以看到该模块的全部命令列表。
让我们来看看其中一些命令的工作方式。
1. Get-WUHistory 命令允许你查看最新更新的历史记录。运行此命令后,你将在屏幕上收到类似的输出。
2. 接下来的命令是 Get-WUInstallerStatus,它可以帮助你验证 Windows Installer 服务的状态。在这里,你可以检查安装程序是否正常工作。此操作的输出可能如下所示:
3. 通过运行 Get-WURebootStatus 命令,你可以检查是否需要重新启动系统以完全应用特定更新。
4. 使用 Get-WUServiceManager 命令,你可以检查 Windows 更新的来源。
如您所见,最后一栏显示了更新来源(例如 Windows 更新、DCat Flighting Prod 等)。
5. 您可以隐藏列表中的某些更新,以避免在计算机上安装它们。为此,您应在可能的地方运行 Hide-WindowsUpdate 命令,并指定您希望隐藏的 KB 文章的 ID。以下示例演示了如何从列表中隐藏 KB2267602 更新:
$HideList = "KB2267602"
Hide-WindowsUpdate -KBArticleID $HideList –Hide
在进行任何更改之前,系统将要求您确认选择。键入 Y 以隐藏 KB 文章。
但是,如果您希望获取隐藏更新的列表,可以运行下面的 cmdlet。
在状态列中,您可以看到字母 H 表示更新已成功隐藏。因此,下次运行 Get-WUInstall 命令时,所选更新将自动从可用更新列表中排除。
如果您想要撤消更改,可以在PowerShell控制台中使用以下命令:
Hide-WindowsUpdate -KBArticleID $HideList -Hide:$false
如您所见,字母 H 不再包含在更新状态中,这意味着此Windows更新不再隐藏,可以在您的计算机上下载。
6. 您可用的另一个配置选项是删除您计算机上安装的更新。为此,您可以使用 Remove-WindowsUpdate 命令并键入您希望从计算机中卸载的KB文章的ID。例如:
Remove-WindowsUpdate -KBArticleID KB4519573 –IgnoreReboot
通过添加 –IgnoreReboot 参数,您确保计算机不会自动重新启动。安装更新后,您可以稍后重新启动计算机。
最后但并非最不重要的,您可以使用Get-WUList cmdlet在远程计算机上扫描可用的Windows更新。
Get-WUList –ComputerName Server5
为了使此cmdlet正常工作,您还需要在远程计算机上安装PSWindowsUpdate模块。通过这种方式,您可以从单个管理界面自动化多台机器的Windows更新。通过PSWindowsUpdate,补丁管理流程变得简单高效。
此外,您可以减少IT管理员在系统打补丁过程中可能遇到的管理开销。
总结
PSWindowsUpdate模块的开发旨在简化和提高补丁管理流程的效率。通过自动安装更新,您可以确保系统定期更新,从而最小化系统故障和安全漏洞的风险。补丁主要是为了解决程序中发现的问题或漏洞而开发的。然而,常规的补丁管理不能确保整个生产环境的全面保护。
为此,您需要使用全面的数据保护解决方案,该解决方案提供物理、虚拟和云环境的备份和站点恢复。使用NAKIVO备份与复制,您可以跨多个平台保护最关键的数据和应用程序,确保在任何情况下都能恢复,并降低数据保护成本。
Source:
https://www.nakivo.com/blog/automate-windows-updates-using-powershell-short-overview/