[玩转系统] 如何构建基本的 PowerShell Windows 更新报告
作者:精品下载站 日期:2024-12-14 20:49:16 浏览:15 分类:玩电脑
如何构建基本的 PowerShell Windows 更新报告
如果您曾经向网络上的客户端部署过 Windows 更新,您的经理可能会询问您部署了哪些 KB,以及工作站或服务器何时出现问题。不幸的是,有时内置的 WSUS 服务器报告工具可能会让您感到沮丧,并且没有强大的功能可以在 WSUS 管理 GUI 之外生成它们。你还有一个选择; PowerShell Windows 更新报告!
如何判断何时需要 PowerShell 报告
最近,一群正在验证安全漏洞扫描的经理向我寻求帮助。此漏洞扫描声称一组系统缺少特定的 Microsoft 知识库,这些知识库是最近批准、截止并在 WSUS 管理控制台中显示为已安装的知识库。
我发送了一些控制台状态的屏幕截图以及我的系统管理员回复。当时我没有多想,因为我忙于其他项目,这是一个例行要求。
大约一天过去了,又运行了另一次漏洞扫描,产生了相同的结果。管理层不相信已安装更新。由于 WSUS 时常出现问题,我开始不信任内置报告和管理控制台。我不知道更新 Windows 这么难!
为了谨慎起见,并且更加勤奋一点,我决定绕过 WSUS 管理控制台,直接进入安全漏洞扫描中显示的工作站和服务器。
集思广益 Windows 更新报告
幸运的是,安全漏洞扫描仅发现大约 4 个工作站和 12 个服务器存在这些据称缺失的 KB。因此,我使用每个主机的完全限定域名 (FQDN) 在文本文件中创建了一个简单列表。我还知道一个事实,缺失的知识库将在过去 30 天内安装,因为我刚刚完成了一个维护周期。
有了这些知识,我记下了一些伪代码来帮助我开始。这是我概述的内容:
- 存储包含主机列表的文本文件。
- 对于该文件中的每个主机,运行命令。
- 该命令必须收集过去 30 天内安装的 KB。
- 输出只需包含主机名、KB/HotFix ID 和安装日期。
- 输出需要可读,并且只需是一个简单的文件。
- 不需要花哨的编码,只需与 WSUS 报告显示的内容进行直观比较即可。
根据我的笔记,我很清楚我正在寻找什么以及我可能需要什么 cmdlet。主要关注点是 Get-HotFix
cmdlet。此 cmdlet 查询已应用于 Windows 主机的所有修补程序(通常称为安全更新)。它可以查找 Windows 计算机上的所有或特定更新。您可以在此处阅读有关此 cmdlet 以及如何使用它的更多信息。
Get-HotFix
不支持隐式远程处理,因此我需要想出在需要报告的系统上运行此 cmdlet 的方法。 Invoke-Command
可以,并且您可以将多个值传递给 ComputerName
参数。
我已经保存了我的目标主机列表,因此我将节省一些打字时间并将这些主机存储为变量。为此,我必须分配一个变量名称并将值设为主机列表。
Get-Content
将逐行读取文本文件的内容,创建一个排序数组。我们将此数组称为$Hosts
。现在我有一个命令,一些数据要提供给下一组命令,但我需要使结果数据可读且简洁。
我想在这里花点时间强调“首先过滤,最后格式化。” 。记住这一点将有助于您处理这些类型的脚本。打开 PowerShell 会话并单独运行 Get-Hotfix
cmdlet 通常会生成一长串已应用于主机的更新。
PS51> Get-HotFix
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
MACWINVM Update KB2693643 MACWINVM\Administ... 3/14/2019 12:00:00 AM
MACWINVM Update KB4100347 NT AUTHORITY\SYSTEM 2/17/2019 12:00:00 AM
MACWINVM Update KB4230204 NT AUTHORITY\SYSTEM 7/6/2018 12:00:00 AM
MACWINVM Security Update KB4287903 NT AUTHORITY\SYSTEM 7/8/2018 12:00:00 AM
MACWINVM Security Update KB4338832 NT AUTHORITY\SYSTEM 7/21/2018 12:00:00 AM
MACWINVM Update KB4338853 NT AUTHORITY\SYSTEM 7/6/2018 12:00:00 AM
MACWINVM Update KB4343669 NT AUTHORITY\SYSTEM 7/19/2018 12:00:00 AM
MACWINVM Security Update KB4343902 NT AUTHORITY\SYSTEM 8/15/2018 12:00:00 AM
MACWINVM Update KB4346084 NT AUTHORITY\SYSTEM 5/11/2019 12:00:00 AM
MACWINVM Update KB4456655 NT AUTHORITY\SYSTEM 9/12/2018 12:00:00 AM
--snip--
过滤有助于仅收集您需要的信息。
如果没有过滤数据,此时格式化是没有用的。将过滤视为您的数据类型要求,将格式化视为您希望数据显示的方式。就我的目的而言,我已经考虑好了需求。我需要在过去 30 天内安装更新。
为了进行过滤,我需要使用 Where-Object
cmdlet,然后传递一些成员属性和比较运算符以及一些数学运算。为此,我将从 Get-HotFix
返回的每个对象 ($_
) 并将其传递给 Where-Object
以查找所有更新安装日期大于 (-gt
) 今天的日期(或每当我运行脚本时)减去 (-30) 天前的日期。这将获得我正在寻找的初始数据。
Get-HotFix | Where-Object { $_.InstalledOn -gt ((Get-Date).AddDays(-30)) }
但我想进一步过滤返回的对象及其属性。这就是 Select-Object
可以提供帮助的地方,它使我能够进一步修剪要显示的数据量,仅显示几个关键属性。
Get-HotFix | Where-Object { $_.InstalledOn -gt ((Get-Date).AddDays(-30)) } |
Select-Object -Property PSComputerName, Description, HotFixID, InstalledOn
现在我已经正确过滤了数据,现在我可以继续将结果格式化为可用的格式。为此,我会将之前的过滤结果通过管道 (|) 传输到 Format-Table -Autosize
并以我选择的文件类型输出。我需要使用 Append
和 -ErrorAction SilentlyContinue
参数来确保每个结果都写入输出文件中的下一行,并且如果发生错误,它将不会'不会导致其他主机无法联系。
Format-Table -AutoSize |
Out-File -Encoding utf8 -FilePath '.\Recent_OS_Updates.txt' -Append -ErrorAction SilentlyContinue
我选择使用文本文件,因为我不需要任何花哨的东西。您可以更改输出以满足您的需要。我的输出看起来与此类似:
这是最终提出并使用的脚本:
$Hosts = Get-Content -Path '.\hosts.txt'
Invoke-Command -ComputerName $Hosts -ScriptBlock {
Get-HotFix | Where-Object {
$_.InstalledOn -gt ((Get-Date).AddDays(-30))
} | Select-Object -Property PSComputerName, Description, HotFixID, InstalledOn
} | Format-Table -AutoSize |
Out-File -Encoding utf8 -FilePath '.\Recent_OS_Updates.txt' -Append -ErrorAction SilentlyContinue
对我来说,这很简单、简洁,并且提供了知识库确实已安装的证据。该报告受到管理团队的好评,且格式易于阅读。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag