PowerShellでWSUSクライアントの未適用更新プログラム取得

by kusakari 18. 9月 2009 23:36

PowerShellからWSUSに接続して、WSUSクライアントの未適用更新プログラム情報を取り出します。

環境:PowerShell v2 , WSUS 3.0


■Microsoft.UpdateServices.Administrationを追加して、ローカルのWSUSサーバへ接続します。

[Reflection.Assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer()




■ComputerTargetScopeクラスを作成します。

$compScope = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope
$compScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::All




■UpdateScopeクラスを作成します。
状態として下記の2つの状態である更新プログラムを取得します。

NotInstalled 未インストール
Downloaded ダウンロード済みで、未インストール

$upScopeNI = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$upScopeNI.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled

$upScopeDL = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$upScopeDL.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Downloaded




■サンプルスクリプト

[Reflection.Assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer()

$compScope = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope
$compScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::All
$upScopeNI = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$upScopeNI.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled

$upScopeDL = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$upScopeDL.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Downloaded

$ret = ""
$comps = $wsus.GetComputerTargets($compScope) | ForEach-Object {
     $updateInfoNI = $_.GetUpdateInstallationInfoPerUpdate($upScopeNI);
     $updateInfoDL = $_.GetUpdateInstallationInfoPerUpdate($upScopeDL);

     $ret += "=============================================`r`n"
     $ret += "コンピューター名: " + $_.FullDomainName + "`r`n"
     $ret += "IPアドレス: " + $_.IPAddress + "`r`n"
     $ret += "最終状態送信日時: " + ([datetime]$_.LastReportedStatusTime).ToString("yyyy/MM/dd HH:mm:ss") + "`r`n"
     $ret += "OS: " + $_.OSDescription + "`r`n"
     $ret += "=============================================`r`n"

     $updateInfoNI | ForEach-Object {
         $updateNI = $wsus.GetUpdate($_.UpdateId)
         $ret += "Title: " + $updateNI.Title + "(" + $updateNI.UpdateClassificationTitle + ")(NotInstalled)`r`n"
         }
     $updateInfoDL | ForEach-Object {
         $updateDL = $wsus.GetUpdate($_.UpdateId)
         $ret += "Title: " + $updateDL.Title + "(" + $updateDL.UpdateClassificationTitle + ")(Downloaded)`r`n"
         }
     $ret += "`r`n"
     }

Write-Host $ret



■結果
200991819_127

コメントを書く


(アイコンを表示しますか Gravatar )

  Country flag

biuquote
  • コメント
  • プレビュー
Loading



Calendar

<<  9月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

RecentComments

Comment RSS