Powershell CoreをWindows Powershellの代わりに使う

広告

Powershell Core

Windows Powershellを起動すると、このようなメッセージが表示されるようになってます。

PowerShell Coreをお試しください

要すれば、「Powershell Coreがリリースされてるよ!」っていうお知らせみたいなものですね。
なお、この"Powershell Core"ですが、Windowsに標準で付いてくる"Windows Powershell"とは別物です。* 1ところで、Powershell Coreの最新版はver.7なんだけど、この表記だとver.6が最新版に見えますけど、この点如何なんでしょう、Microsoftさん。

このPowershell Core自体は、安定版・RC版が次のサイトから――GitHubから――普通にダウンロードできますが、これをインストールしたところで、"Windows Powershell"が置き換わるわけではありません。

GitHub – PowerShell/PowerShell: PowerShell for every system!

もちろん、Windows + Q を押下して"powershell"なりを検索する・そもそもインストール時のオプションで「Explorerの右クリックメニューに『Powershellで開く』」* 2‥的なニュアンスだったと思う。メニューがあるわけですけど、

  • 前者は"Windows Powershell"も検索に引っかかって邪魔だし、管理者として起動するのが少々手間。
  • 後者は楽だけど、素でキーボード操作だけでPowershellを起動したい。

という話なんです。

ここで使い勝手が良さそうなのが、Windows + X の押下で出てくる"Powershell"系統のメニューなんですが* 3これは覚えておいた方がいいショートカットキーの代表格。、"Core"のインストーラーはここを置き換えてくれないんですよね。何故なんでしょう。

Windowsキー + X メニューの場所

インストーラーが置き換えてくれないのなら、自力で置き換えてしまえばよかろう‥とは思うのですが、実はこの置き換えが結構難しいんですよね。

これが例えば、右クリックの「送る」メニューであれば、%APPDATA%\Microsoft\windows\SendTo にその実体があるため、割合あっさり書き換えられるのですが、Windowsキー + X メニューはそうもいかないんですよね。

余談ながらこれは、歴史的な経緯も大きいと思う。Win + X はWindows 8からの機能なのに対して、「送る」はWindows 95の頃からある機能なので。

一応、Windows + X メニューの実体は、%LOCALAPPDATA%\Microsoft\Windows\WinX にあり、その中の"Group 1"~"Group 3"フォルダがそれぞれ Windows + X メニューの下から順に対応しているので、そこを置き換えればいい。
――とはそうは問屋が卸さない感じでした。

そもそもなんですが、これらのフォルダ内に Windows + X メニュー内の「シャットダウン」などのメニューはないわけで、別な手法を使う必要があるわけなのです――そう、なかなか我々素人の手に負える代物ではなかったのです。

方法1:Win+X Menu Editor を使う

これがおそらく最も簡単な方法でしょう。ダウンロード先は以下。

Win+X Menu Editor for Windows 10 and Windows 8

Win+X Menu Editor

起動すると、次のような画面が表示されます。‥がまぁ、こについては特段迷うべき操作はないでしょう。説明は割愛します。* 4英語とはいえ、平易な書き方をしているうえに直感的な書き方ですからね。
一点注意するとしたら、「メニューの変更は、Explorerを再起動しないと反映されない」という点でしょうか。

方法2:hashlnkを使う方法

コマンドを直接叩く分こちらの方が難易度が高そうに見えますが、応用範囲は広いです。

Windows + X メニューの中身は、次のような機序で動作しているものと思われます。

  1. %localappdata%\Microsoft\Windows\WinX 内に Group1 ~ Group10 という名前のフォルダが存在する場合、それらをメニューの区切りと見做す。
  2. それらのフォルダに入ってるショートカットを、explorerの(再)起動時にロードする。
  3. これらの並び順は、ファイル名でソートしたときに、下から見て名前順・昇順となる。
  4. これを、Windows + X メニューに割り当てる。

一部、電源系など特殊な操作はありますが、基本はこれで構成されているとみて間違いはないでしょう。

ところが問題になるのが、このショートカットが「普通のショートカットでは動作しない」点にあります。
詳しい点は情報不足で全くわからないのですが、ショートカットに何か特別な値を付け加えると、上記2で使用できるショートカットとして認識できるのではないかと思われます。

一部、電源系など特殊な操作はありますが、基本はこれで構成されているとみて間違いはないでしょう。

ところが問題になるのが、このショートカットが「普通のショートカットでは動作しない」点にあります。
詳しい点は情報不足で全くわからないのですが、ショートカットに何か特別な値を付け加えると、上記2で使用できるショートカットとして認識できるのではないかと思われます。

そして、これを付加するのが次のツールです。

hashlnk/hashlnk_0.2.0.0.zip at master · riverar/hashlnk · GitHub

使い方は簡単で、

  1. %programfiles%\PowerShell\7\pwsh.exe へのショートカットを、通常権限・管理者権限双方を作成する。
  2. hashlnk コマンドを実行する。使い方は、
    • Powershell: ./hashlnk "対象のショートカットのパス"
    • cmd.exe: hashlnk "対象のショートカットのパス"
  3. Powershellなどの特殊なショートカットの場合、上記の手順をもう一度繰り返す。
    • これは謎な挙動で、所謂普通のプログラムへのショートカットだと2の手順のみでよいのですが、Powershellやcmdのような特殊なショートカットの場合、何故か2回――ハッシュが変わらなくなるまで――繰り返す必要が生じます。
  4. explorerを再起動する。すると下記のようになります。
    何か蛇足感がありますね。ついでに言うと、ショートカットキーがこれでは動作せず、面白くありません。よって以下の改良を施します。
    カスタマイズされたWindows+Xメニュー1
  5. Windows Powershellのショートカットはもう使いません。削除しましょう。
    もし改めて必要になったら、上記の Win+X Menu Editor がデフォルトに戻す機能を有してますし、心配ならバックアップ・コピーを取っておけばよいでしょう。
  6. ショートカットキーを設定します。ショートカットのプロパティのコメントに、"Powershell 7 (Admin)(&A)" なり "Powershell 7(&I)" なり適当なコメントを設定します。
    ここで、"(&A)"は"A"キー、"(&I)"はIキーのショートカットを示す、いわばお約束的な文句だと思ってください。

    • ちなみに、このメニューで表示される名前には次の優先順位があるため、コメントを設定するのがよいと思う。
      1. コメント
      2. Explorerでの表記上のショートカット名。ファイル名とは異なる。
      3. ファイルの名前
  7. explorerを再起動。すっきりした見た目になりました。もちろんショートカットキーも使えます。
    カスタマイズされたWin+Xメニュー2
  8. なおここで、コマンドプロンプトを Windows + X メニューに表示するよう下記のように設定を変えると、‥
    Win+Xメニューのcmd.exeを有効化
  9. cmd.exeとPowershellがどちらも使えますw
    実用性はともかく、これはこれでありかもしれません。
    カスタマイズされたWin+Xメニュー3

参考までに

このようなリンクも存在します。
こちらを見るのも一案かもしれません。

便利だった、Windows + Xメニューの「コントロールパネル」項目を復活させる:Tech TIPS – @IT

こちらはPowershellではなく、コントロールパネルの追加でしたが、学べることは多いでしょう。* 5私は本記事執筆後、これを見つけて歯噛みしましたがね‥。

注釈[+]

どうしようもない雑記を書いてる場所だよ