Как отфильтровать замененные обновления WSUS с помощью фильтрации UpdateScope - PullRequest
0 голосов
/ 18 января 2019

Я создаю простой сценарий 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, который я применил к фильтрации Scope?

Это образец текущего выхода, который, как я ожидаю, не имеет 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 голосов
/ 20 января 2019

Пожалуйста, обратитесь к ApprovedStates Enumeration описанию в Microsoft Docs:

... Указывает, утверждено или нет обновление. Эти флаги могут быть использованы для получения обновлений в указанном состоянии. ...

Члены этого списка перечислены ниже:

Любой - включает все обновления, независимо от того, утверждены ли они, отклонено или не утверждено.

Отклонено - включает обновления, которые были отклонены.

HasStaleUpdateApprovals - Включает обновления, которые одобрены для ревизия, которая не является последней ревизией.

LatestRevisionApproved - включает обновления, последняя версия которых утвержден.

NotApproved - Включает обновления, которые не были утверждены или отказался.


Теперь перейдем к вашему вопросу о том, почему замененные обновления все еще отражаются после этого условия, потому что они не должны проверять поведение замены. Они используются для проверки состояния утверждения (утверждено, отклонено, не утверждено). Последняя версия - это когда Microsoft продолжает обновлять / пересматривать обновление после его первоначального выпуска.

Если вы хотите определить поведение замены, $updateinfo.IsSuperseded - это вариант, на который можно положиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...