【VSCode】「このシステムではスクリプトの実行が無効になっているため…」エラーの対処法|PowerShell ExecutionPolicy

みなさんこんにちは。

VSCodeのターミナルでPowerShellを使用していると、スクリプトを実行した際に、

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

といったエラーが表示されることがあります。

例えば、PowerShellのps1ファイルを実行した場合や、Pythonの仮想環境を有効化する際などに遭遇することがあるかと思います。

今回は、PowerShellのExecutionPolicy(実行ポリシー)が原因でスクリプトを実行できない場合の対処法についてご紹介したいと思います。


この記事はこんな人におすすめ

この記事はこんな人におすすめです!

  • VSCodeのターミナルでPowerShellを使用している人
  • ps1ファイルを実行できない人
  • 「このシステムではスクリプトの実行が無効になっているため」と表示される人
  • ExecutionPolicyの確認・変更方法を知りたい人

といったところでしょうか。


VSCodeに関する過去の記事

VSCodeのエラーや拡張機能に関する内容については、過去の記事でもご紹介しておりますのでそちらもどうぞ。


表示されるエラーについて

例えば、VSCodeのPowerShellターミナルからps1ファイルを実行した際に、以下のようなエラーが表示されることがあります。

このシステムではスクリプトの実行が無効になっているため、
ファイルを読み込むことができません。
VSCodeのPowerShellで「このシステムではスクリプトの実行が無効になっているため」と表示された画面

この場合、PowerShellのExecutionPolicy(実行ポリシー)によってスクリプトの実行が制限されている可能性があります。

ExecutionPolicyとは

ExecutionPolicyは、PowerShellでスクリプトを実行する際の条件を設定するための機能です。

Windowsでは設定されている実行ポリシーによって、ps1ファイルなどのPowerShellスクリプトを実行できない場合があります。

ExecutionPolicy概要
Restrictedスクリプトの実行を許可しない
RemoteSignedローカルで作成したスクリプトは実行可能。インターネットから取得したスクリプトには署名が必要
AllSignedすべてのスクリプトに信頼された発行元の署名が必要
Bypassブロックや警告を行わない

今回については、現在の実行ポリシーを確認したうえで、必要に応じてRemoteSignedへ変更していきます。

現在のExecutionPolicyを確認する

まずはVSCodeでPowerShellのターミナルを開きます。

ターミナル上で以下のコマンドを実行してください。

Get-ExecutionPolicy -List

実行すると、MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachineそれぞれの設定を確認できます。

PowerShellのGet-ExecutionPolicy -ListでProcessがRestrictedになっていることを確認した画面

実効ポリシーがRestrictedとなっている場合は、スクリプトの実行が制限されている可能性があります。

CurrentUserをRemoteSignedへ変更する

現在ログインしているユーザーに対して実行ポリシーを変更する場合は、以下のコマンドを実行します。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

確認メッセージが表示された場合は、内容を確認して処理を進めてください。

PowerShellのCurrentUserのExecutionPolicyをRemoteSignedに設定した画面

CurrentUserを指定しているため、設定変更の対象は現在ログインしているユーザーとなります。

設定変更後、もう一度 Get-ExecutionPolicy -List を実行し、CurrentUserがRemoteSignedになっていることを確認してください。

スクリプトをもう一度実行する

ExecutionPolicyを変更したら、エラーが発生していたスクリプトをもう一度実行してください。

ExecutionPolicyが原因であれば、先ほどまで表示されていたエラーが解消され、スクリプトを実行できるようになります。

ExecutionPolicy変更後にVSCodeのPowerShellでスクリプトを正常実行した画面

一時的に実行したい場合

PCへ継続的に設定を保存せず、現在開いているPowerShellだけで一時的に実行したい場合は、Processスコープを使用する方法もあります。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Processスコープの設定は現在のPowerShellセッションだけに適用され、ターミナルを閉じると設定は破棄されます。

一時的な動作確認などで使用する場合はこちらの方法もありますが、実行するスクリプトの内容を確認したうえで使用してください。

変更しても改善しない場合

ExecutionPolicyを変更しても改善しない場合は、もう一度 Get-ExecutionPolicy -List を実行してください。

MachinePolicyやUserPolicyに実行ポリシーが設定されている場合、会社や学校などの管理者がグループポリシーを使用して設定している可能性があります。

この場合は、CurrentUser側の設定より管理者側のポリシーが優先されるため、端末を管理している担当者へ確認してください。

設定変更時の注意点

ExecutionPolicyはPowerShellスクリプトを実行する際の安全性に関係する設定です。

エラーを解消するためだけに、LocalMachineへBypassやUnrestrictedを継続的に設定することはおすすめしません。

今回のようにCurrentUserへRemoteSignedを設定するなど、必要な範囲に絞って変更するようにしてください。


最後に

いかがでしたでしょうか。

今回は、VSCodeのPowerShellで「このシステムではスクリプトの実行が無効になっているため」と表示された場合の対処法についてご紹介しました。

まずはGet-ExecutionPolicyで現在の設定を確認し、必要に応じてCurrentUserをRemoteSignedへ変更してみてください。

また、会社や学校などの管理端末ではグループポリシーによって実行ポリシーが設定されている場合もありますので、その場合は管理者へ確認することをおすすめします。

同じエラーが発生した際に少しでもお役立ていただければ幸いです。


開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。

そんな方はいつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

お気軽にご相談ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA