使用Powershell自动化MS更新

时间:2015-01-02 17:31:27

标签: powershell text extract filenames

我正在尝试根据我下载的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语句。谢谢

1 个答案:

答案 0 :(得分:0)

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

$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答案。