如何在powershell中跳过可选的窗口更新



我找到了一个脚本来下载我一直在调整以适应我的需要的windows更新。它似乎工作得很好,除了我不知道如何在下载之前删除可选的更新。我发现"关键"、"重要"one_answers"中等"更新的MsrcSeverity值是这3个词中的一个,其中可选项为空。如何在下载之前从列表中删除没有msrcseverity值的更新??

这是整个代码…

$global:scriptpath = $MyInvocation.MyCommand.Path
$global:dir = Split-Path $scriptpath
$global:logfile = "$dirupdatelog.txt"
write-host " Searching for updates..."
$session = New-Object -ComObject Microsoft.Update.Session
$searcher = $session.CreateUpdateSearcher()
$result = $searcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")
if ($result.Updates.Count -eq 0) {
     Write-Host "No updates to install"
}
else {
    $result.Updates | Select Title
    $result.Title >> $logfile
}
$downloads = New-Object -ComObject Microsoft.Update.UpdateColl
foreach ($update in $result){
    $downloads.Add($update)
}
$count = $result.Updates.Count
write-host ""
write-host "There are $($count) updates available."
write-host ""
read-host "Press Enter to downloadinstall updates"
$downloader = $session.CreateUpdateDownLoader()
$downloader.Updates = $downloads
$downloader.Download()
$installs = New-Object -ComObject Microsoft.Update.UpdateColl
foreach ($update in $result.Updates){
     if ($update.IsDownloaded){
           $installs.Add($update)
     }
}
$installer = $session.CreateUpdateInstaller()
$installer.Updates = $installs
$installresult = $installer.Install()
$installresult

我现在有"read-host"来阻止它下载,直到我弄清楚这个。我试过在$result.updates | Select Title | where {$result.Updates.MsrcSeverity -ne $null}放一个额外的管道,我也试过只用$result.MsrcSeverity,没有去。我在几个不同的地方尝试过"where"管道。我还尝试在几个地方做一个If语句,说如果MsrcSeverity不等于null,然后将其添加到列表中。我也试过用and MsrcSeverity = 'Important'")添加到$searcher.Search(行,只是为了测试,没有做任何事情。

到目前为止,它仍然列出所有的更新,无论是否有在MsrcSeverity列的东西。我找错地方了吗?这是我能看到的唯一能区分重要更新和可选更新的东西。

谢谢。

搜索条件记录在IUpdateSearcher::Search方法

不幸的是,BrowseOnly=0不排除Windows更新程序中看到的可选更新。但AutoSelectOnWebSites=1有。

  • "BrowseOnly = 1,查找可选的更新。

  • "BrowseOnly = 0,查找非可选的更新。

  • "AutoSelectOnWebSites = 1,查找标记为由Windows Update自动选择的更新。

  • "AutoSelectOnWebSites = 0,查找未标记为自动更新的更新。

$session1 = New-Object -ComObject Microsoft.Update.Session -ErrorAction silentlycontinue
$searcher = $session1.CreateUpdateSearcher()
#Do not search for optional updates and exclude hidden
$result = $searcher.Search("IsInstalled=0 AND AutoSelectOnWebSites=1 AND IsHidden=0")

谢谢大家的帮助。我得到了那么多有用的建议,我不知道从哪里开始……

我明白了,谢谢。

相关内容

  • 没有找到相关文章

最新更新