【PowerToys】コマンドが見つからないときにパッケージを提案する「Command Not Found」の使い方
2024年1月10日にリリースされたPowerToys v0.77.0では、PowerShellでコマンドの実行に失敗したときに、足りないパッケージを提案する「Command Not Found」機能が追加されました。
この記事では、Command Not Foundの特徴や使い方、動作しない場合の対処法などについて紹介します。
Command Not Foundとは
「Command Not Found」は、パッケージの不足が原因でPowerShellコマンドの実行が失敗したときに、インストールするべきパッケージを提案してくれる機能です。
Windowsのパワーユーザー向けに高度で便利な機能を数多く提供している、Microsoft製のオープンソースツール「PowerToys」のv0.77.0以降に搭載されています。
PowerShellでコマンドを実行しようとしたとき、次のようなエラーメッセージが表示されたことはありませんか?
これは、実行しようとしたコマンドが見つからなかったときに発生するエラーです。
Command Not Foundは、PowerShellコマンドの実行時にコマンドが見つからないというエラーが発生すると、そのコマンドを提供しているパッケージをインストールするためのコマンドを表示してくれます。
パッケージ名を検索してインストールする必要がなくなるので、コマンドの実行に失敗したときに、すぐに対処できるようになります。
Command Not Foundの使い方
インストール方法
Command Not Foundはデフォルトでは有効化されていないため、使用するには最初に必要なコンポーネントをインストールする必要があります。
動作に必要なコンポーネントをインストールするには、PowerToysの設定画面を開き、[Command Not Found]タブを表示します。
[インストール]という青いボタンが表示されているので、これをクリックします。コマンドプロンプトが自動で起動し、必要なコンポーネントがインストールされます。
インストールが完了すると、[インストール]ボタンが[アンインストール]ボタンに代わり、横に[Installed ✅]という表示が追加されます。
また、追加で依存関係をインストールする必要がある場合は、該当する項目に[Not detected ✕]というテキストと[インストール]ボタンが表示されます。この[インストール]ボタンをクリックすると、その依存関係が自動的にインストールされます。
PowerToysの設定画面でCommand Not Foundモジュールが[Installed]になっており、すべての依存関係が[Detected]になっているのを確認したら、準備は完了です。PowerToysの設定画面は閉じてしまって大丈夫です。
実際に使ってみる
Command Not Foundを利用する準備が整ったので、実際に使ってみましょう。
Command Not Foundをインストールしてから初めてPowerShellを起動すると、次のようなメッセージが表示されます。このメッセージは、初回起動時にのみ表示されます。
このメッセージは、PowerShellのプロファイル(スタートアップスクリプト)を読み込んでいることを示しています。PowerShellのプロファイルは、PowerShellを起動するたびに読み込まれます。
PowerShellのプロファイルは、PowerShellの起動時に実行するコマンドを記述できる機能です。Command Not Foundは、PowerShellプロファイルを利用して動作します。
では、実際にインストールされていないコマンドを実行し、Command Not Foundを使ってみましょう。私の場合はpowertoys
コマンドをインストールしていないので、これで試してみます。
powertoys
コマンドが見つからないというエラーメッセージとともに、Command Not Foundがpowertoys
をインストールするためのwinget
コマンドを提案してくれました。
提案されたコマンドを実行すると、powertoys
コマンドを提供しているパッケージがインストールされます。
Command Not Foundが動作しない場合の対処法
Command Not Foundが動作しない場合は、次の対処法を試してみてください。
PowerShellのバージョンを確認する
Command Not Foundは、PowerShell v7.4以降を利用している必要があります。PowerShellのバージョンを確認して、v7.4以降を利用しているかどうかを確認してください。
PowerShellのバージョンは、PowerShellを起動して最初に表示されるメッセージか、$PSVersionTable
コマンドで確認できます。
PowerShellを再起動する
PowerShellを一度終了してから再度起動してみてください。これによって、PowerShellプロファイル(スタートアップスクリプト)が再読み込みされ、Command Not Foundが適用される可能性があります。
PowerShellを再インストールする
Command Not Foundには既知の問題が複数存在しています。とくに、MSIXファイルを利用してPowerShellをインストールしている場合は、Command Not Foundが動作しないようです。
MSIX経由でインストールしている場合は、PowerShellを一度アンインストールしてから、次のwinget
コマンドを使って再インストールしてみてください。
PowerShellを使っていることを確認する
Windowsには、「Windows PowerShell」と「PowerShell」が存在し、これらは別のものです。Command Not Foundは「PowerShell」に対してのみ動作します。また、標準のコマンドプロンプトに対しても動作しません。
Windows PowerShellではなくPowerShellを使っていることを確認してください。
まとめ
PowerShellでコマンドの実行に失敗したときに、足りないパッケージを提案してくれる「Command Not Found」機能について紹介しました。
Command Not Foundは、PowerToysのv0.77.0で追加された機能です。
PowerToysにはさまざまな便利機能が搭載されているので、ぜひ使ってみてください。