我正在尝试根据我下载的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编号的内容:
PowerShell脚本列出所选文件夹下的MSU文件:
$Dir = get-childitem $folder -recurse
$KBUpdateList = $Dir | where {$_.extension -eq ".msu"}
$KBUpdatenames = $KBUpdateList | format-table name
$KBNumberonly = $KBUpdateList.split("-")[1]
拆分失败,我找不到修复方法。我只想返回KBXXXX编号,以便我可以运行我之后的foreach语句。谢谢
答案 0 :(得分:0)
这应该足以满足您的需求。
$KBUpdatenames = get-childitem $folder -recurse -Filter "*.msu" | Select-Object -Expand Name
$KBNumberonly = $KBUpdatenames | ForEach-Object{$_.split("-")[1]}
使用Get-ChildItem
获取“.msu”类型的文件。在您寻找扩展的大多数情况下,使用-Filter
比Where-Object
更有效。然后我们使用Select-Object
至于代码中的Format-Table
,我会向您推荐一个我喜欢的Format-Taco答案。