使用 Powershell 自动更新 MS

Automating MS Updates with Powershell

我正在尝试根据我下载的 KB/MSU 包自动化我的 Microsoft 更新过程。我有一个 WMIC csv 文件,我可以根据简单的 If else 语句进行安装。我想使用列表从下载的文件中仅提取 "KBXXXXX" 并将其与已安装的 KB 列表进行比较并发现缺少的内容。

KB 安装列表(WMIC 输出):

KB123456
KB234567
KB345678

下载的KB文件列表格式$KBUpdateList: 姓名

WINDOWS6.1-KB2533552-X64.MSU                                                                                       
WINDOWS6.1-KB2533552-X86.MSU                                                                                       
WINDOWS6.1-KB2539635-X64.MSU                                                                                       
Windows6.1-KB958488-v6001-x64.MSU 

这是我无法提取 KB 号的内容:

用于列出所选文件夹下的 MSU 文件的 PowerShell 脚本:

$Dir = get-childitem $folder -recurse
$KBUpdateList = $Dir | where {$_.extension -eq ".msu"}
$KBUpdatenames = $KBUpdateList | format-table name 
$KBNumberonly = $KBUpdateList.split("-")[1]

拆分失败,我找不到修复方法。我只想 return KBXXXX 编号,这样我就可以运行后面的 foreach 语句。谢谢

这应该足以满足您的需求。

$KBUpdatenames = get-childitem $folder -recurse -Filter "*.msu" | Select-Object -Expand Name
$KBNumberonly = $KBUpdatenames | ForEach-Object{$_.split("-")[1]}

使用Get-ChildItem获取“.msu”类型的文件。在大多数情况下,您只是在寻找扩展,使用 -FilterWhere-Object 更有效。然后我们只用 Select-Object

扩展文件名

至于您代码中的 Format-Table,我会向您推荐我喜欢的有关 Format-Taco 的答案。