如何使用UpdateScope筛选来筛选WSUS替代更新

时间:2019-01-18 06:43:35

标签: powershell windows-update

我正在创建一个简单的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
          }

      }

在我的报告中,我已经列出了“取代的”更新。我希望看到将在目标计算机上安装的这些更新。 我可能会添加一些带有“ $ _。Superceded”或类似字符的额外过滤器,但是我想了解为什么它不适用于我应用于范围过滤器的: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

1 个答案:

答案 0 :(得分:0)

请参考Microsoft文档上的ApprovedStates Enumeration描述:

  

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

此枚举的成员如下:

  

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

     

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

     

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

     

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

     

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


现在,向您提出一个问题,为什么在这种情况下仍会反映出被取代的更新,这是因为不应该检查这些替代行为。它们用于检查批准状态(已批准,已拒绝,未批准)。最新版本是Microsoft最初发布后不断更新/修订的版本。

如果您想确定取代行为,则可以选择$updateinfo.IsSuperseded