我正在创建一个简单的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
答案 0 :(得分:0)
请参考Microsoft文档上的ApprovedStates Enumeration
描述:
...指示是否批准或拒绝更新。这些 标志可用于检索指定状态下的更新。 ...
此枚举的成员如下:
任何-包括所有更新,无论它们是否获得批准, 拒绝或未批准。
已拒绝-包括已被拒绝的更新。
HasStaleUpdateApprovals -包括已获得批准的更新 不是最新版本的版本。
LatestRevisionApproved -包括最新版本为 批准。
未批准-包括尚未批准的更新或 拒绝了。
现在,向您提出一个问题,为什么在这种情况下仍会反映出被取代的更新,这是因为不应该检查这些替代行为。它们用于检查批准状态(已批准,已拒绝,未批准)。最新版本是Microsoft最初发布后不断更新/修订的版本。
如果您想确定取代行为,则可以选择$updateinfo.IsSuperseded
。