【问题标题】:How to filter WSUS superceded updates using UpdateScope filtering如何使用 UpdateScope 筛选筛选 WSUS 取代​​的更新
【发布时间】:2019-01-20 21:37:02
【问题描述】:

我正在创建一个简单的 powershell 脚本,用于报告某个计算机缺少更新,但尽管我在报告中使用了一些范围过滤,但仍会出现被取代的更新。

为什么“LatestRevisionApprovedUpdates”过滤器对被取代的更新没有任何影响?

$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
 $updateScope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::LatestRevisionApproved  # Includes updates whose latest revision is approved.
 $updateScope.UpdateApprovalActions = [Microsoft.UpdateServices.Administration.UpdateApprovalActions]::Install
 $updateScope.UpdateSources = [Microsoft.UpdateServices.Administration.UpdateSources]::MicrosoftUpdate;
 # $updatescope.IncludedInstallationStates=@('NotInstalled','Downloaded','Failed','InstalledPendingReboot')
 $updatescope.ExcludedInstallationStates=@('NotApplicable','Installed')
 $updatescope.ToCreationDate = (get-date).AddDays(-$days)


$mycomputer=$wsus.GetComputerTargetbyName($computername) 

$updatelist = $mycomputer.GetUpdateInstallationInfoPerUpdate($updateScope) 

  foreach ($update in $updatelist ) {
        $updateinfo=$update.Getupdate()
           [pscustomobject][Ordered]@{
            Status=$update.UpdateInstallationState
            Approval=$update.UpdateApprovalAction
            ArrivalDate=get-date $updateinfo.ArrivalDate -format dd-MMM-yyyy
            ApprovalTargetGroup=$update.GetUpdateApprovalTargetGroup().name
            Approved=$updateinfo.isapproved
            KB=$updateinfo | %{$_.KnowledgebaseArticles -join ","}
            SuperSeded=$updateinfo.IsSuperseded
            Declined=$updateinfo.IsDeclined
            Title=$updateinfo.title
          }

      }

在我的报告中,我已经列出了“已取代”的更新。我希望看到将安装在目标计算机上的这些更新。 我可能会添加一些带有“where $_.Superceded”或类似内容的额外过滤器,但我想了解为什么它不适用于我在 Scope 过滤中应用的 :LatestRevisionApproved?

这是当前输出的一个示例,我希望在此列表中没有 SuperSeded。

  Status     Approval ArrivalDate Approved  KB      SuperSeded Declined
  ------     -------- ----------- --------  --      ---------- --------
NotInstalled  Install 11-Dec-2018     True 4471983      False    False
NotInstalled  Install 11-Dec-2018     True 4471989       True    False
NotInstalled  Install 12-Dec-2018     True 4471320       True    False
NotInstalled  Install 12-Dec-2018     True 4471322      False    False
NotInstalled  Install 12-Dec-2018     True 4470199       True    False
NotInstalled  Install 20-Dec-2018     True 4483187       True    False
Downloaded    Install 09-Jan-2019     True 4481484      False    False
Downloaded    Install 09-Jan-2019     True 4480964      False    False
Downloaded    Install 09-Jan-2019     True 4480963      False    False
Downloaded    Install 09-Jan-2019     True 4481485      False    False
Downloaded    Install 09-Jan-2019     True 4480965      False    False
Downloaded    Install 10-Jan-2019     True 4470499      False    False
Downloaded    Install 10-Jan-2019     True 4470602      False    False

【问题讨论】:

  • 嗨@UhTrog!我看到你最近很活跃,但没有对我的回答发表任何评论。你有什么想澄清的吗?

标签: powershell windows-update


【解决方案1】:

请参阅 Microsoft Docs 上的ApprovedStates Enumeration 说明:

... 指示更新是被批准还是被拒绝。这些 标志可用于检索指定状态的更新。 ...

下面列出了这个枚举的成员:

任何 - 包括所有更新,无论是否获得批准, 拒绝或未批准。

已拒绝 - 包括已被拒绝的更新。

HasStaleUpdateApprovals - 包括获得批准的更新 不是最新版本的版本。

LatestRevisionApproved - 包括最新版本为 批准。

NotApproved - 包括尚未批准或未批准的更新 拒绝。


现在,关于为什么在这种情况下仍然反映被取代的更新的问题,是因为这些不应该检查取代行为。它们用于检查批准状态(已批准、已拒绝、未批准)。最新版本是微软在其初始发布后不断更新/修订更新。

如果您想确定替代行为,$updateinfo.IsSuperseded 是可以依赖的选项。

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2020-07-22
    • 2018-04-02
    • 2011-11-21
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    相关资源
    最近更新 更多