有馬総一郎のブログ

(彼氏の事情)

2018年12月07日 00:08:29 JST - 2 minute read - PowerShell

セキュリティポリシーを変更してもアプリからPowerShellを起動するときはExecutionPolicyを付ける

でもって、作成したPowerShellスクリプトをfoobar2000から起動させようとすると上手くいかない…

powershell -file "C:\Users\arimasou16\AppData\Roaming\foobar2000\tool\ps\script.ps1" "%artist%" "%title%"

一般ユーザーとして、ローカルのスクリプトを実行するには、予め監視者権限でpowershellを立ち上げ、Set-ExecutionPolicy RemoteSignedをしておく必要がある。

WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する:Tech TIPS - @ITのとおり、セキュリティポリシーを変更しているのにも拘わらず…

実際、powershellを起動してスクリプト実行、または、コマンドプロンプト、もしくは bat ファイルからスクリプトの実行ができるか、確認しても全て可能となっている。

foobar2000からpowershell -command "Get-ExecutionPolicy;pause"を実行させて実行セキュリティポリシーを確認すると Restricted になっている。

foobar2000 Run Service
powershell

どうもアプリ経由でPowerShellスクリプトを起動した場合は、上記変更は関係ないらしくてpowershell -ExecutionPolicy RemoteSigned -file スクリプトファイルとセキュリティポリシーを指定した上で実行しないと駄目のようだ。

powershell -ExecutionPolicy RemoteSigned -file "C:\Users\arimasou16\AppData\Roaming\foobar2000\tool\ps\script.ps1" "%artist%" "%title%"

これで上手く実行できた。

というか驚いたのだけど、Set-ExecutionPolicy Restrictedつまりデフォルトにしても、 RemoteSigned を指定して実行できてしまうので、どういうセキュリティ設計なのか理解に苦しむ…