使用Powershell自动执行MS更新
我试图根据我下载的KB/MSU软件包自动执行我的Microsoft更新过程。我有一个WMIC csv文件,可以根据简单的If else语句进行安装。我想使用列表从下载的文件中提取“KBXXXXX”,并将其与已安装的KB列表进行比较,并发现缺少的内容。使用Powershell自动执行MS更新
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语句。谢谢
这应该足够您正在寻找。
$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-Taco,我享受Format-Table
的文件的名称。
这是我得到的错误:方法调用失败,因为[System.Object []]不包含名为'split'的方法。 在C:\ scripts \ UpdateVM.ps1:53 char:36 + $ KBNumberonly = $ KBUpdateList.split Tested4Noobs
oops ...坚持..复制代码错误。 @ Tested4Noobs再试一次。 – Matt
谢谢马特现在工作的很棒! – Tested4Noobs
对于初学者不要这样做'$ KBUpdatenames = $ KBUpdateList |格式表名称“。 __Never__将'Format- [anything]'的输出分配给变量,因为它会破坏输出。 '格式 - [任何东西]'是为了好看的控制台输出,这就是所有。 – Matt
相关提示...谢谢 – Tested4Noobs