本記事はプロモーションを含みます

PowerShellでこのシステムではスクリプトの実行が無効になっているため、ファイル test.ps1 を読み込むことができません。となったときの対応方法

eyecatch_1276

はじめに

マイクロソフトより、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」に戻っているので、実行ポリシーが無事に元に戻りました。

問題が解決したら、お友達と共有しませんか?

この記事にいっぱいおごってみる?

KOBE WINGのAmazonほしい物リスト

オススメ記事

eyecatch_1330

Windows10 WindowsUpdate 2024年4月 不具合情報 KB…

はじめに この記事は、2024年4月9日に公開されたWind…

eyecatch_481

Google ToDoリスト パソコン版 大きく表示する方法…

問題点 Google ToDoが便利で、ちょっとしたメモに便…

eyecatch_1101

Windows11 エラーコード 0xC0000102 HAL 修復方法 Win…

問題点 Windows11やWindows10の起動時に、W…