【Management】Windows Update Powershell Module (1)

久しぶりに Windows Update をスクリプトから実行しようかなぁと思って PowerShell のコマンドレットを探していたら、標準では提供されていないんですねぇ。全く気づいておりませんでした。

となると、VBScript のように Microsoft.Update.Session を呼び出すしかないものかと思っていると、なんと便利なモジュールが提供されていました。

Windows Update PowerShell Module
https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc

さっそく使ってみましょう。

まずはダウンロードして ZIP ファイルを開いてみてください。PSWindowsUpdate フォルダが格納されているはずです。この中にこのモジュールを構成するスクリプト群が格納されています。

これらのファイルは「インターネットゾーンからダウンロードしたファイル」なので、必ず「ブロックの解除」を実行しておきましょう。でないと実行できません。

image

ブロック解除が完了したら、PSWindowsUpdate フォルダを、PowerShell のモジュール用フォルダに保存します。

モジュール用フォルダの場所を確認するには、以下のように PowerShell コンソールから環境変数 PSModulePath を確認します。

PS C:\windows\system32> $env:PSModulePath C:\Users\junichia\Documents\WindowsPowerShell\Modules;C:\windows\system32\WindowsPowerSh ell\v1.0\Modules\;C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\

(参考)Windows PowerShell: Windows PowerShell のカスタム ツールをパッケージ化して配布する

ここでは3つのパスが指定されています。

以下のパスはユーザーの個人的なモジュールパスで、今回はモジュールを追加するのでこの配下に PSWindowsUpdate フォルダを移動してください。なお、既定ではこのパスは存在しないので、自分で作ってください。

  • C:\Users\junichia\Documents\WindowsPowerShell\Modules

以下のパスはシステムモジュール用のパスです。

  • C:\windows\system32\WindowsPowerShell\v1.0\Modules\

以下は Windows Azure 用コマンドレットをインストールしたときに作成されたパスでしょう。既定では存在しませんので、無くても不安にならないでください。

  • C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\

PSWindowsUpdate フォルダを移動したら、コンソールから Import しましょう。

PS C:\> Import-Module pswindowsupdate

ブロック解除が行われていれば、特にエラーは出力されないはずです。

次に、コマンドレットの一覧を見てみましょう。以下の用の出力されたら問題ありません。

PS C:\>Get-Command -Module pswindowsupdate

CommandType Name ModuleName ----------- ---- ---------- Function Add-WUOfflineSync pswindowsupdate Function Get-WUHistory pswindowsupdate Function Get-WUInstall pswindowsupdate Function Get-WUInstallerStatus pswindowsupdate Function Get-WUList pswindowsupdate Function Get-WURebootStatus pswindowsupdate Function Get-WUServiceManager pswindowsupdate Function Get-WUUninstall pswindowsupdate Function Hide-WUUpdate pswindowsupdate Function Remove-WUOfflineSync pswindowsupdate Function Test-ElevatedShell pswindowsupdate  

それぞれのコマンドレットの用途は、なんとなーくわかりますよね。

具体的な使い方は次の投稿で。