PowerShellでこのシステムではスクリプトの実行が無効になっているため、ファイル test.ps1 を読み込むことができません。となったときの対応方法
はじめに
マイクロソフトより、2023年10月にVBScriptが非推奨の方針が発表され、将来的には使用できなくなることによりPowerShellへの移行する機会が徐々に増えることだと思います。PowerShellを始めようとして一番最初につまずく、エラーに関しての対処法の解説になります。
エラー内容
ps1ファイル(Powershell版バッチファイルだと考えてください)を動かそうとしたら、「PowerShellでこのシステムではスクリプトの実行が無効になっているため、ファイル test.ps1 を読み込むことができません。」と出て動かすことができなかった。
この記事の動作環境
多少環境が違ったりWindows10でも動作は変わらないと思いますが、一応、確認時に使用した動作環境記載します。
OS:Windows11 Home 23H2
OSビルド:22631.3296
Windows Poweshellバージョン:10.0.22621.3085
エラー内容
PS C:> test.ps1
./test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\test.ps1 を読み
込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参
照してください。
発生場所 行:1 文字:1
+ ./test.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
このような感じで、はじめてのPowerShellのスクリプト「test.ps1」を動かそうとしたらエラーが発生します。
エラーの原因
エラーで「このシステムではスクリプトの実行が無効になっているため」と記載があるように、実行する権限がないってところが問題だとわかります。ここで必要な権限は「実行ポリシー」と呼ばれているものとなり、ここを設定すると使えるになります。
対処方法
詳しくは、エラーで記載されていたページに記載がありますので、「PowerShell を使用した実行ポリシーの管理」までページをスクロールしていき記載されている内容を実行していきましょう。
現状の実行ポリシーの確認
まずは、現状の実行ポリシーがどのようになっているか確認しましょう。
PS C:> Get-ExecutionPolicy
Restricted
「Get-ExecutionPolicy」と入力し、有効な実行ポリシーを取得します。
「Restricted」と帰ってきたので、実行ポリシーが「Restricted」と設定されていることがわかり、これは、「個々のコマンドは実行できますが、書式設定ファイル(.ps1xml)、モジュールスクリプトファイル(.psml)、およびPowerShellプロファイル(.ps1)を含むすべてのスクリプトファイルの実行が禁止されます。」ということなので、制限されていたら正常に動かないですよね。
実行ポリシーを変更する
問題がわかりましたので、解決しましょうっということで、実行ポリシーを変更しましょう。
ただし、ずっと変更してしまうとセキュリティー面が不安なので、今開いているプロセスを、開いている間だけ実行ポリシーが変わるようにしましょう。
PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
「Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process」を実行すると今開いているプロセスだけ「test.ps1」が動くようになります。
それぞれの意味は「Set-ExecutionPolicy -ExecutionPolicy」で実行ポリシーを設定の宣言です。
「RemoteSigned」は、実行ポリシーで署名されていないスクリプトを実行できないようにする宣言です。
「-Scope Process」は、現在の PowerShell セッションのみに影響しますという宣言です。
PS C:> Get-ExecutionPolicy
RemoteSigned
設定が完了したので、一応実行ポリシーを再び確認したところ、
「RemoteSigned」と帰ってきましたので、行ポリシーで署名されていないスクリプトを実行できないようになっていることが確認できました。
スクリプトファイルを動かしてみる
PS C:> test.ps1
2024年4月5日 20:28:19
時間を取得する「test.ps1」を実行したら無事に現在の時間が取得できました。
実行ポリシーが戻っていることを確認する。
念のために、今開いているパワーシェルを閉じて、改めてパワーシェルを開いて、実行ポリシーが元に戻っていることを確認します。
PS C:> Get-ExecutionPolicy
Restricted
このように「Restricted」に戻っているので、実行ポリシーが無事に元に戻りました。
オススメ記事
Microsoft Office 格安品は購入してもいいの?…
はじめに 時々ですが、Microsoft Officeの格安…
PowerShellでこのシステムではスクリプトの実行が無効になっているため、フ…
はじめに マイクロソフトより、2023年10月にVBScri…
はじめに 今回の和暦西暦早見表は、終了後の年数も記載しており…
ディスカッション
コメント一覧
まだ、コメントがありません