ひとりになりたい

ノーストレスで生きていく

WSUSの同期をコマンドから実行する方法

 
WSUSの同期をコマンドで実行する方法を記載します。
PowerShellでの実行になります。
 
 

①同期開始コマンド

(Get-WsusServer).GetSubscription().StartSynchronization()
 
<返却値>
 なし
 
同期処理はバックグラウンド実行されるため、処理はすぐ返って来ます。
もちろんバックアップグラウンド実行のため同期の結果は返してくれません。
 
 

②同期状態の確認コマンド

バックグラウンド実行中の同期は下記コマンドで確認できます。
 
(Get-WsusServer).GetSubscription().GetSynchronizationStatus()
 
<返却値>
Running:同期中
NotProcessing:同期処理していない
 
ただ、こちらも①で開始した同期の結果を返してくれません。
あくまで、同期が進行中であるか、なしかになります。
 
 

③最終同期結果の確認コマンド

①で開始した同期の結果を確認するためには、下記コマンドが必要です。
 
(Get-WsusServer).GetSubscription().GetLastSynchronizationInfo()
 
<返却値(Result項目のみ抜粋)>
Succeeded:成功の場合
Failed:失敗の場合
※他のステータスもあります。
 
 

スクリプトで組む場合

 
下記流れの組み込みが必要かもしれません。
 
①同期の開始
②同期状態の確認(NotProcessingになるまでループ)
③最新同期結果の確認(Succeeded以外は失敗とみなす)
 
結果にこだわらなければ、①だけでも十分です。
 
 

補足

他にもメソッドあるようですので参考にしてみてください。
 

最後に

1日複数回の同期であればWSUS標準機能で設定できますが、特殊な事情で、複雑なタイミングで実施したいなどの場合に利用できると思います。
 
ただ、その場合だとステータス管理のキャッチが若干ややこしいです。
同期開始コマンドのオプションとかに、フォアグラウンド実行でステータス返してくれればいいんですけどね。。