PowershellでUpdateを制御
普段何気なくWindowsの更新を実行していますが、Powershellから更新を開始できます。
これによりリモート上から簡単にできたり、メンテナンスバッチの一部にWindows更新を組み込めます。
初回モジュールのインストール
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force install-Module -Name PSWindowsUpdate -Force
Windows Update
Get-WindowsUpdate Install-WindowsUpdate -AcceptAll
コマンドの解説
NuGetプロバイダーが必要
install-Module -Name PSWindowsUpdate -Forceを実行した際に発生するエラーです。
続行するには NuGet プロバイダーが必要です PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または'C:\Users\user\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐPowerShellGet で NuGet プロバイダーをインストールしてインポートしますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は"Y"):
そのためNugetプロバイダーをインストールするために下記のコマンドを実行します
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
PSWindowsUpdate
このモジュールをインストールすれば使用できるようになります。
Powershell Galleryでも一番使われているモジュールです。
Get-WindowsUpdate
このコマンドで更新するモジュールを取得するプロセスになります。
Install-WindowsUpdate
Install-WindowsUpdate -AcceptAll
実行中
更新終了
再起動が必要なようですが、デフォルトではNなので強制的に再起動はしないようです。
自動再起動させたい
再起動してもいい場合は下記の引数を追加したコマンドにしてください。
Install-WindowsUpdate -AcceptAll -AutoReboot
自動再起動のオプションしか無いので、終了後にシャットダウンさせたい場合はこんな感じになります
Install-WindowsUpdate -AcceptAll;Stop-Computer -Force
ポリシーエラーが発生する場合
Get-WindowsUpdate
Get-WindowsUpdate : 'Get-WindowsUpdate' コマンドはモジュール'PSWindowsUpdate' で見つかりましたが、このモジュールを読み込むことができませんでした。詳細については、'Import-Module PSWindowsUpdate' を実行してください。 発生場所 行:1 文字:1 + Get-WindowsUpdate + ~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-WindowsUpdate:String) [],CommandNotFoundException + FullyQualifiedErrorId : CouldNotAutoloadMatchingModule
Import-Module PSWindowsUpdate
Import-Module : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\2.2.0.3\PSWindowsUpdate.psm1を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。 発生場所 行:1 文字:1 + Import-Module PSWindowsUpdate + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) [Import-Module]、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand
いずれも権限の問題から発生するエラーなので、
Set-ExecutionPolicy RemoteSigned
を実行してポリシー変更をします。
ポリシー変更は適切な状態にしないとセキュリティの問題が発生するため注意してください。