【问题标题】:Listing Superseded Updates using powershell in WSUS 3在 WSUS 3 中使用 powershell 列出被取代的更新
【发布时间】:2014-04-15 20:20:19
【问题描述】:

我正在尝试自动化管理 WSUS 报告的过程。我设法 I) 向 WSUS 控制台报告我批准的更新。 II)为超级种子运行清理进程

所以我用来列出已批准更新的脚本是:

$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::LatestRevisionApproved
$updatescope.FromArrivalDAte = [datetime]"10/08/2013"
$wsusgroup = $wsus.GetComputerTargetGroups() | Where {$_.Name -eq "PCM_WSUS_spec"}
$updatescope
$updatescope.gettype()
$updatescope.count
$updateScope.ApprovedComputerTargetGroups.add($wsusgroup)
$wsus.GetUpdates($updatescope) | Select KnowledgebaseArticles,Title
$Updates = $wsus.GetUpdates($updatescope) | Select KnowledgebaseArticles

我真正需要的是一个基于 aboce 列表的更新列表的功能;在给定日期之后获得批准的更新。

有什么想法吗?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    要建立被取代的更新列表,您需要知道当前的更新。被取代的更新作为与当前更新关联的 UpdateID 列表进行维护。 (通过向后遍历该列表来构建取代更新列表。)

    在实际的包 XML 中是这样的:

    <sdp:SupersededPackages xmlns:sdp="http://schemas.microsoft.com/wsus/2005/04/CorporatePublishing/SoftwareDistributionPackage.xsd">
      <sdp:PackageID>b87cc8c1-b03d-4548-aa53-f0138ec6e2a3</sdp:PackageID>
      <sdp:PackageID>7d8fcd7b-49d1-440d-8140-d6c33ce2cb80</sdp:PackageID>
      <sdp:PackageID>76f68136-436f-42a5-9029-560b23702416</sdp:PackageID>
      <sdp:PackageID>64b8c9d0-ecbc-4711-90de-b190d2ee7ee1</sdp:PackageID>
      <sdp:PackageID>6bd77c33-1b2d-450d-91c6-259e101e57bb</sdp:PackageID>
      <sdp:PackageID>94642c22-d70e-45b8-a70f-c09b86e2c4f5</sdp:PackageID>
    </sdp:SupersededPackages>
    

    但我不知道它是如何通过 API 实际访问的(如果可能的话),也不知道在数据库架构中的什么位置可以找到它。

    【讨论】:

      【解决方案2】:

      好吧,我使用以下方法获得了一个列表:

       '[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
      $WSUS = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer('wsupdates',$false,80) 
      #creating the update scope. Different parameters can be used each time for different reports needed
      $updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
      $updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::LatestRevisionApproved
      $updatescope.FromArrivalDAte = [datetime]"10/08/2013"
      $wsusgroup = $wsus.GetComputerTargetGroups() | Where {$_.Name -eq "PCM_WSUS_spec"}
      $updateScope.ApprovedComputerTargetGroups.add($wsusgroup)
      $updatescope
      $updates = $wsus.GetUpdates($updatescope) | Select Title,UpdateClassificationTitle,SupersededUpdates | Sort Title |Export-csv 'C:\WSUS\test_approved.csv' -notype
      $updates = $wsus.GetUpdates($updatescope) 
      $updates 
      
      
      
      $updates | ForEach-Object  {
      $temp =$_
      Write-Output ' temp is'
      $temp
      $temp | Select Title| Export-CSV 'C:\wsus\superseded.csv' -Append -Notype -Force
      $SupersededOnes = $_.GetRelatedUpdates(([Microsoft.UpdateServices.Administration.UpdateRelationship]::UpdatesSupersededByThisUpdate)) |Select Title
      Write-Output 'after finding out superseded'
      $SupersededOnes
      Start-Sleep 8
      $SupersededOnes | Export-CSV 'C:\wsus\superseded.csv' -Append -Notype -Force
      }' 
      

      我的问题是它在已批准的下方附加了被取代的内容,除了关联的取代更新之外,我还需要将它们添加到列中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多