2013-10-22 47 views
0

我試圖自動化WSUS報告管理過程。我設法通過 我報告了我批准的WSUS控制檯的更新。 II)的超級種子列出取代的更新使用WSUS 3中的powershell 3

運行清理過程所以我用列出批准更新的更新腳本是:

$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 list;在給定日期後獲得批准的更新。

任何想法?

回答

0

要構建被取代的更新列表,您需要知道當前的更新。被取代的更新被保存爲與當前更新相關聯的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訪問(如果甚至可能的話),或者在數據庫模式中的何處找到它。

0

嗯,我實現用獲取列表如下:

'[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 
}' 

我的問題是它的附加取代的批准下,我需要他們列除了關聯替代更新。