かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ vol.241 自動化スクリプト ─ アプリ(Edge)の更新|Hyper-V 小技・裏技集
2026年10月13日配信
2026年10月13日更新
執筆者:山内 和朗
「Hyper-V小技・裏技集」シリーズでは、Hyper-Vの仮想環境を利用していて、知っていると便利な小技や裏技を紹介します。vol.237では、PowerShell DirectとCopy-VMFileの使いこなしについて説明しました。これらを活用した、VMのゲスト側タスクの自動化例を紹介しています。
※ここで紹介するサンプルコードは、PowerShellスクリプト(.ps1)内に記述することを想定しています。-ErrorAction Stopパラメーターは、エラー時にスクリプト全体を停止します。PowerShellウィンドウに入力して実行した場合は、エラーが発生しても以後のスクリプトは停止しないため、別のエラーが発生する可能性があることに注意してください。
前回は、Hyper-Vホスト側に用意したWindows Update用のスクリプト(WUA_SearchDownloadInstall.ps1)をCopy-VMFileを使用してVMのゲストにコピーし、Invoke-Commandを使用してリモート実行、更新を完了するまでの再起動を含めVMのシャットダウンまで行う自動化スクリプトを紹介しました。PowerShellでスクリプト化できれば、Invoke-Commandを使用した管理タスクの自動化は簡単です。任意のアプリケーションの更新についても、同じ方法で自動化できるでしょう。スクリプトが複雑になる場合は、Windows Updateの例のように、ホスト側にスクリプトファイル(.ps1)を用意して、Copy-VMFileでVMのゲストにコピーしてから実行すればよいのです。
今回は、VMのゲストのWindowsやWindows Server(デスクトップエクスペリエンス)に標準搭載されているMicrosoft Edgeの更新をスクリプト化してみます。PowerShellでMicrosoft Edgeを更新する方法については、以下のMicrosoft Learnドキュメントで具体的なコマンドラインが説明されています。
Windows 10 更新プログラムを適用した Microsoft Edge の展開|Microsoft Edge(Microsoft Learn)
| Start-Process -FilePath "C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" -argumentlist "/silent /install appguid={56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}&appname=Microsoft%20Edge&needsadmin=True" |
現在インストールされているMicrosoft Edteのバージョン情報を取得するには、次のいずれかのコマンドラインを使用します。なお、2つ目の方法は更新直後だと古い情報を返すことがあるので、1つ目のレジストリから取得する方(Get-Item...)をお勧めします。
| (Get-Item "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe").VersionInfo.ProductVersion または (Get-AppXPackage Microsoft.MicrosoftEdge.Stable).Version |
これらのコマンドラインを組み合わせて(以下のコードの青字の部分)、Invoke-CommandでVMに対してリモート実行すれば、VMのコンソールに接続することなく、Microsoft Edgeを最新バージョンに更新できます(画面1)。
(プレーンテキストでダウンロード/表示)
※ この例のようにスクリプト内に平文パスワードを記述することは推奨されません。平文パスワードを排除する方法については、vol.238の「スクリプトから平文パスワードを排除する簡単な方法」を参照してください。

画面1 Hyper-VホストからVMのMicrosoft Edgeを更新するPowerShellスクリプトの実行例
もう少し凝ってみましょう。以下の連載で紹介したサンプルスクリプト「get-msedgebiz.ps1」は、Microsoft Edgeのリリースに関する方法を提供するMicrosoft EdgeのAPI「https://edgeupdates.microsoft.com/api/products?view=enterprise」を使用したスクリプトであり、指定したチャネル(例: -Channel Stable)、プラットフォーム(例: -Platform Windows)、アーキテクチャ(例: -Architecture x64)、バージョン(例: -Version Current《最新》)のダウンロードURLを含む詳細情報を取得できます。このサンプルスクリプトを組み合わせれば、最新バージョンがインストールされているかどうかを確認し、必要であれば更新するということができます(画面2、画面3)。
メモ. Microsoft Edgeインストーラーのダウンロード自動化の可能性を探る
(プレーンテキストでダウンロード/表示)
※ この例のようにスクリプト内に平文パスワードを記述することは推奨されません。平文パスワードを排除する方法については、vol.238の「スクリプトから平文パスワードを排除する簡単な方法」を参照してください。

画面2 最新バージョンより古い場合は更新
画面3 既に最新バージョンの場合は更新しない
リファレンス(Microsoft Learn):
Invoke-Command(PowerShell)| Export-Clixml(PowerShell)| Import-Clixml(PowerShell)