2017-08-16 15 views
3

WSUSによってインストールされたWindows更新プログラムを検索する際に使用しているコードは次のとおりです。そのためのスイッチはありますか?Windows Updateをインストールした後に再起動の状態を確認するPowershell

$Session = New-Object -ComObject "Microsoft.Update.Session" 

$Searcher = $Session.CreateUpdateSearcher() 

$historyCount = $Searcher.GetTotalHistoryCount() 

$Searcher.QueryHistory(0, $historyCount) | Select-Object Date, 

    @{name="Operation"; expression={switch($_.operation){ 

     1 {"Installation"}; 2 {"Uninstallation"}; 3 {"Other"}}}}, 

    @{name="Status"; expression={switch($_.resultcode){ 

     1 {"In Progress"}; 2 {"Succeeded"}; 3 {"Succeeded With Errors"}; 

     4 {"Failed"}; 5 {"Aborted"} 

}}}, Title | Out-GridView 
+0

再起動のステータスを確認するためのスイッチがあるとは思われません。明示的に –

答えて

2

COMオブジェクトのプロパティとメソッドを簡単に見ても、これは表示されません。 You can query update before to see if they might trigger a rebootですが、クライアントの反応を保証するものではありません。

他の方法もありますが、現在の状態を確認したい場合は、レジストリを参照することをお勧めします。

If a patch was installed by WindowsUpdates that requires a reboot it should leave a registry entry in this location

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired

だから、あなただけの限りWUが懸念しているとして、その保留状態を知るために、そのキーでどの値があるかどうかを確認する必要があります。 -ErrorActionを使用

$pendingRebootKey = "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" 
$results = (Get-Item $pendingRebootKey -ErrorAction SilentlyContinue).Property 

if($results){ 
    # Reboot is pending 
} 

は、物品によれば、以降に有用である:

注 RebootRequiredキーが自動的に削除されることが は、揮発性(のみメモリに保持されている)だとして、マシンの再起動時。

あなたはのtry/catchにロジックを変更する必要があるとの懸念が存在する場合ItemNotFoundExceptionのようなもののために特定のエラーに見えるかもしれませんので、これは他の潜在的な問題を隠すことができます。

+0

をチェックしなければならないと思いますが、これを現在の出力に新しい列として追加するにはどうすればいいですか?新しいオブジェクト? –

+0

これはホストマシンで正しく実行されますか?現在の出力リストの更新。更新プログラムをレジストリデータに接続できるかもしれませんが、これをどのように満足のいく方法で追加するのかはわかりません。別の計算されたプロパティを追加することもできますが、クエリを実行している更新ではなく、実行中のコンピュータのプロパティです。 – Matt

関連する問題