PowerShellによるWindows7のWindowsUpdate自動化

前回、サーバでWindowsUpdateを自動実行したのですが、Windows7でも実施したので備忘録。
毎月Update状況の報告を求められるのですが、求められてからやっていると仕事が止まるのでこの際自動化しておこうと。

クライアントOSでは、PowerShellの実行ポリシーがサーバと異なるようだったので、まずはそこから。

 

前回と同じくWindows Update PowerShell ModuleからPSWindowsUpdate.zipをダウンロードします。

PSWindowsUpdate.zipをPowerShellのパスが通っているところに展開し、Import-Moduleをしてやります。

検索すると、Unblock-FileコマンドレットはPowerShell 3.0以上で利用可、となっています。
バージョンを調べてみると…

確かに2.0でした。画面の構成が違うなぁとは思ってたんだ←

ということで、サーバのテスト環境にしてしまうべくサーバと同じPowerShell4.0を導入することにします。
下記のページからWindows Management Framework 4.0をダウンロード

Windows Management Framework 4.0
インストールして再起動します。念のためバージョンを確認。

無事4.0になっています。
コマンドプロンプトを管理者として起動し、自動実行させる予定のコマンドを動かしてみます。

 

Windows7で-AcceptAllオプションで実行した結果

ServicePack1のギリシア語パックとかダウンロードし始めたので、Ctrl+Break(笑)

どうやら、-AcceptAllだと重要な更新のほか、オプションの更新もインストールしてしまうようです。
サーバなのでそもそもオプションの更新が配信されなかったので気づきませんでした(^_^;

重要な更新(自動選択されるもののみ)に変更するべくオプションを探したところ、-AutoSelectOnlyが該当するようです。

順調に進んでるな、と思ったら再起動を促すプロンプトが出て止まりました。

再起動プロンプト

ソースを見る限りは、再起動が必要な状態になったらRestart-Computerコマンドレットを流すので自動再起動だと思ったのですが、Windows7のつくりが違うのか予想外の挙動をします。

タスクスケジューラに登録したら挙動が違うかも、と思いタスクスケジューラに登録してやります。

タスクスケジューラへの登録

タスクの作成をして、全般タブでは以下を設定します。

  • ユーザーがログオンしているかどうかにかかわらず実行するにチェック
  • タスクの実行時に使うユーザーアカウントを「SYSTEM」に変更
  • 最上位の特権で実行する

タスクの作成 ー全般タブ

操作タブに移って「新規(N)」を選択します。

タスクの作成-操作タブ

  • プログラム/スクリプト欄に以下を入力
    %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
  • 引数欄に以下を入力
    -Command Get-WUInstall -AutoSelectOnly -AutoReboot

実行内容の登録

トリガータブに移って「新規(N)」を選択します。

タクスの作成 ートリガータブ

前回、実行の結果エラーが起こったUpdateがあったので、再起動とUpdate実行を繰り返しさないと完了しませんでした。間に再起動が入ると制御ファイルかなにかでControlしてやらないと行けないのですが、そこまですることも無いので「毎日夜間に実施」にしておくことにしました。

Microsoftの配信タイミングは「米国時間の第二水曜日」なので日本時間だと第二水曜日だったり第三水曜日だったりするのですよ(^_^;

  • 設定を毎日にする
  • 開始を開始日の午前3時にして間隔を1日にする

実行タイミングの指定

出来上がったタスクを手動実行した所、自動再起動されました。でもクライアントOSで自動再起動は扱いに困りますね(^^;

Windows7はテスト環境として手動実行・サーバOSは毎晩3時に実行することにして、しばらく様子を見ることにします。

まとめ

  • PSWindowsUpdateはWindows7でも利用可能
  • ただし、PowerShellは3.0以上対応なのでWindows Management FrameworkをUpdateする
  • -AcceptAllオプションはクライアントOSだと不必要なUpdateもインストールされるので、
    -AutoSelectOnlyの方がベター

実行タイミングはそれぞれの環境でご検討ください。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください