Windows 10 の右クリックメニューには「PowerShell で実行」があります。(以前の Windows にもあります)
ところが、この右クリックメニューの「PowerShell で実行」は、実行後 PowerShell プロンプトを閉じてしまうので使い勝手が良いものではありません。そこで、スクリプト実行後にプロンプト閉じないようにする -NoExit オプションを以下レジストリに付加します。
キー | HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command |
名前 | (既定) |
種類 | REG_SZ |
値 | "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoExit" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'" |
こうすると、.ps1 実行後にプロンプトを閉じないので、結果を確認することができるようになります。
Shell\<キー> には以下の意味があります。
0 | 実行 |
Edit | 編集 |
Open | 開く |
runas | 管理者として実行 |
応用編で、管理者として実行する右クリックキーを追加するには、以下のレジストリ設定をします。
独自追加なので、右クリックで表示するメニューもセットします。
キー | HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\runas |
名前 | (既定) |
種類 | REG_SZ |
値 | "Run with PowerShell as Administrator" |
キー | HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\runas\Command |
名前 | (既定) |
種類 | REG_SZ |
値 | "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoExit" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'" |
PowerShell で設定するのなら、以下をコピペします。
|
Windows 10 デフォルト環境であればこの設定で良いのですが、秀丸エディタとかサクラエディターとかのサードパーティ製のエディタをインストールして、.ps1 に関連付けると、今まで表示できていた右クリックメニューが表示されなくなります。
関連付け変更
「PowerShell で実行」が消えた
この問題解決をする前に、右クリックメニューがどのように動作するのかをまず整理します。
ファイルを右クリックすると、拡張子に対応する、以下のレジストリ値をとってきます。
キー | HKEY_CLASSES_ROOT\.ps1 |
名前 | (既定) |
種類 | REG_SZ |
ここには、Microsoft.PowerShellScript.1 と書かれているので、以下レジストリが右クリックメニューになりります。
キー | HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell |
つまり、さっき設定したところですね。
拡張子をサードパーティプログラムに割り当てると、以下のキーが追加されます。
キー | HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice |
名前 | ProgId |
種類 | REG_SZ |
この値が、デフォルト(HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell)設定より優先されるので、設定した右クリックメニューが表示されなくなるのです。
例えば、秀丸エディタを関連付けると、この値に「Applications\Hidemaru.exe」がセットされます。
すると、以下レジストリが右クリックメニューになります。
キー | HKEY_CLASSES_ROOT\Applications\Hidemaru.exe\shell |
このため、.ps1 デフォルトの右クリックメニューである HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell が参照されなくなるので右クリックメニューが表示されなくなるのです。
面白い事に、デフォルトの notepad.exe を関連付けると、HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice には Microsoft.PowerShellScript.1 がセットされるので、結果的にデフォルトの右クリックメニューがまた表示されるようになります。
ざっとまとめると以下動作です。
Windows 10 Default
HKEY_CLASSES_ROOT\.ps1
→ Microsoft.PowerShellScript.1
→→ HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
.ps1 に秀丸エディタを関連付け
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
→ Applications\Hidemaru.exe
→→
HKEY_CLASSES_ROOT\Applications\Hidemaru.exe\shell
.ps1 に notepad.exe を関連付け
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
→ Microsoft.PowerShellScript.1
→→
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
仕組みがわかれば、どこに右クリックメニューを追加すれば良いのか判断できるので、以下の PowerShell スクリプトで右クリックメニューを追加できます。
|
エクスプローラーの右クリックで PowerShell プロンプトを開く
http://www.vwnet.jp/Windows/PowerShell/OpenPowerShellPrompt.htm
Copyright © MURA All rights reserved.