PowerShellには
wingetパッケージマネージャを利用するコマンドがある
Windowsのパッケージマネージャであるwingetに関しては、本連載でも何度か解説している(Windows 11におけるアプリインストーラーとwinget)。今回は、そのPowerShellへの実装を見ていきたい。
PowerShell 7.x用には、Microsoft.WinGet.Clientモジュールがあり、ここにwingetパッケージマネージャを利用するコマンドがある。
wingetコマンドは、手動でパッケージ管理、パッケージの検索、情報表示、インストール、アップグレードなどをするためのものだ。インストールされているパッケージの一覧表示機能などもあるが、その出力を分析して処理といったことは考えられていない。
これに対してMicrosoft.WinGet.Clientモジュールでは、インストール済みのパッケージリストなどを、PowerShellのオブジェクトとして出力するため、フィルタリングやソートといった処理が可能となる。また、結果から特定のプロパティを取り出して処理することも可能になる。
PowerShell、Windows PowerShell(以下共通の場合は、PowerShellと総称)で、Microsoft.WinGet.Clientモジュールを利用するには以下のコマンドを実行する。システムの状態により、必要なモジュールのインストール確認が行われるが、すべて「Y」で先に進む。
Install-Module -Name Microsoft.WinGet.Client -Scope CurrentUser
なお、管理者権限で起動したターミナルウィンドウならば、「-Scope CurrentUser」を省略できる。そのあと、Get-Commandコマンドでコマンドが存在することを確認する。
Get-Command -Noun "WinGet*"
ここに、コマンド(Cmdlet)が表示されれば、モジュールのインストールは完了している。なお、表示されるAliasはSettingsが最後に来るコマンドをSettingでも動くようにするものなので気にする必要はない。
モジュールには、以下の表のようなコマンドが定義される。
なお、参考として、winget.exeコマンドのサブコマンドを以下に示す。
1回Install-Moduleコマンドを使えば、以後、PowerShellでは常にモジュールが読み込まれる。このため、起動ごとにモジュールを読み込ませる必要はない。
Microsoft.WinGet.Clientのコマンドは、インストールされているwingetパッケージに含まれているパッケージマネージャを利用する。そのために、インストールされているwingetパッケージとの整合性を検証するコマンドや、wingetのインストールをアップデートするコマンドなどが用意されている。
wingetとMicrosoft.WinGet.Clientは、アップデートのタイミングが異なるため、利用にあたっては、最新のwingetのインストールが必要になることがある。これを検証するのが「Assert-WinGetPackageManager」(https://github.com/microsoft/winget-cli/blob/v1.30.100-preview/src/PowerShell/Help/Microsoft.WinGet.Client/Assert-WinGetPackageManager.md)である。
もし、エラーが表示された場合、「Repair-WinGetPackageManager」(https://github.com/microsoft/winget-cli/blob/v1.30.100-preview/src/PowerShell/Help/Microsoft.WinGet.Client/Repair-WinGetPackageManager.md)を使って、wingetをアップデートするなどして修復する。スクリプトなどで使う場合、最初にこれらのコマンドを使って、整合性を取った上で実行を開始するといいだろう。
パッケージに関する機能のうち、winget showコマンドのようなパッケージのメタ情報を扱う機能がMicrosoft.WinGet.Clientにはない。あらかじめパッケージ名ありきで処理していくだけなので、リリースノートのようなメタ情報を直接扱うコマンドはないが、Export-WinGetPackage(https://github.com/microsoft/winget-cli/blob/v1.30.100-preview/src/PowerShell/Help/Microsoft.WinGet.Client/Export-WinGetPackage.md)を使い、パッケージをダウンロードすると、メタ情報を含んだマニフェストファイル(yamlファイル)が得られる。
これを解析すれば、winget showコマンドのようなパッケージ自体の情報を得ることができる。デフォルトのダウンロード先は、ユーザーのDownloadsフォルダ。コマンドは以下のとおり。
Export-WinGetPackage パッケージ名またはパッケージId
Downloadsフォルダにパッケージ名のフォルダを作り、その下にダウンロードするため、ディレクトリの衝突を心配する必要はない。
ソースの設定、管理やパッケージの検索、インストール関連は、ほぼ、wingetのサブコマンドと同等のコマンドがある。
Microsoft.WinGet.Clientの詳細なヘルプは、GitHubの以下のURLにマークダウンファイルがありコマンド書式や解説がある。
●Microsoft.WinGet.Client
https://github.com/microsoft/winget-cli/tree/v1.30.100-preview/src/PowerShell/Help/Microsoft.WinGet.Client
また簡易的には、Get-Helpコマンドで各コマンドのコマンドライン書式を見ることもできる。
PowerShellからwingetパッケージマネージャを扱えるようになり、インストール済みのパッケージのデータベース化も可能になった。Windowsの完全再インストールのあと、事前にMicrosoft.WinGet.Clientから得られた情報を使って、Microsoftストアアプリ以外のソフトウェアの復活もできそうだ。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第543回
PC
Windows 11 Ver.26H2プレビュー公開 さらにその次のWindowsも少し見えてきた -
第542回
PC
「WMIC」が消滅 コマンドが消える「WMI」とはそもそも何? -
第541回
PC
AIを組み込んだWindowsターミナル「Intelligent Terminal」をインストールして試してみる -
第540回
PC
Windows 11に付属の新しいOutlookでアカウント設定をする -
第539回
PC
Microsoft製の新しいWindows用日本語入力「Copilot Keyboard」を使う -
第538回
PC
PowerShellをシェルとして使うためのポイント【情報表示のやり方】 -
第537回
PC
PowerShellをシェルとして使うためのポイントを解説 -
第536回
PC
Microsoft製のコンソールエディタMS-Editが2.0になり、文法ハイライト機能が搭載 -
第535回
PC
WSLコンテナーのプレビューを試す 今年はWSLに動きがありそうだ -
第534回
PC
Windows 11におけるアプリインストーラーとwinget - この連載の一覧へ














