PowerShellスクリプトの実行禁止エラー(ExecutionPolicy)を解除する方法|初心者向けに安全な設定を解説

old-letters プログラミング

PowerShellで初めてスクリプト(.ps1ファイル)を実行したとき、真っ赤な文字で次のようなエラーが表示されることがあります。

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

初めて見ると「スクリプトを間違えた?」「PowerShellが壊れている?」と焦ってしまいますが、実は正常な動作です。

Windowsの初期設定では、インターネットからダウンロードした悪意のあるプログラムを勝手に実行しないように、最も厳しい設定が適用されています。

そのため、パソコンの安全性を高めるためにPowerShellのスクリプト実行が制限されています。

この記事では、

  • ExecutionPolicyとは何か
  • エラーの原因
  • 安全な解除方法
  • おすすめの設定
  • 元に戻す方法

まで初心者向けに分かりやすく解説します。

PowerShellのExecutionPolicyとは?

ExecutionPolicyとはスクリプト実行ルールのこと

ExecutionPolicy(実行ポリシー)とは、PowerShellでスクリプトを実行してよいかを制御する仕組みです。

ウイルスや悪意のあるスクリプトを誤って実行しないように、Windowsには最初から制限が設けられています。

つまり「PowerShellが使えない」のではなく「安全のためにスクリプトの実行を止めている」という状態です。

現在のExecutionPolicyを確認する方法

まずは現在の設定を確認しましょう。

PowerShellを開いて、次のコマンドを実行します。

Get-ExecutionPolicy

Powershellの開き方などがわからないときは、次の記事を参考にしてください。

PowerShellの基本!!フォルダーとファイルの操作
PowerShellとはPowerShellは、Windowsを効率的に操作するためのコマンドラインシェル、スクリプト言語です。Windowsにはプレインストールされており、従来のコマンドプロンプトよりも強力で、Windowsの管理の自動化…

例えば、次のように表示されます。

PS C:\Users\User> Get-ExecutionPolicy
Restricted

実行した結果「Restricted」と表示された場合、スクリプトの実行が禁止されている状態です。

なお、PowerShellには設定が適用される範囲(スコープ)が複数あります。

より詳しく確認したい場合は、次のコマンドを実行してみましょう。

実行することで、各スコープの実行ポリシーを確認することができます。

Get-ExecutionPolicy -List

実行した結果です。

PS C:\Users\nscgb> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser      Restricted
 LocalMachine       Undefined

「CurrentUser(現在のユーザー)」や「LocalMachine(パソコン全体)」など、どの範囲にどのルールが適用されているかが一覧で分かります。

ExecutionPolicyの種類

PowerShellにはいくつかの実行ポリシーがあります。

設定内容
Restrictedスクリプトを実行できない(既定)
RemoteSigned ローカルで作成したスクリプトは実行可能
AllSigned 署名済みスクリプトのみ実行可能
Unrestricted 警告は表示されるが実行できる
Bypass 制限なし
Undefined 未設定

初心者に最もおすすめなのはRemoteSignedです。

PowerShellのスクリプト実行禁止を解除する方法

私もPowerShellを使い始めたころは、毎回このエラーで止まっていました。

現在は以下の設定を使用しています。

実行すると、現在のログインしているユーザーにのみ「RemoteSigned」が設定されます。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

実行後には、次のコマンドで現在の実行ポリシーを表示し、設定されたか確認しましょう。

PS C:\Users\User> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
PS C:\Users\User> Get-ExecutionPolicy
RemoteSigned

「RemoteSigned」と表示されれば設定完了です。

これで自分が作成したPowerShellスクリプト(.ps1ファイル)を実行できるようになります。

管理者権限が不要な設定

初心者の方に最もおすすめなのは、コマンドの末尾に次のオプションを付け加える方法です。

-Scope CurrentUser

先ほどのスクリプトの後ろの部分です。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

CurrentUserは、現在ログインしているユーザーにだけ設定が適用されます。

パソコン全体の設定を変更しないため、管理者権限が不要で、会社のパソコンなどでも比較的安全に設定を変更できます。

パソコン全体へ設定する方法

現在ログインしているユーザーだけでなく、パソコンを使うユーザー全体の設定を変更する場合には、次のスクリプトを実行します。

Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

実行すると次のようなエラーが表示されることがあります。

Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Power
Shell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。 既定 (LocalM
achine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを
用して Windows PowerShell を起動してください。現在のユーザーの実行ポリシーを変更す
るには、"Set-ExecutionPolicy -Scope CurrentUser" を実行してください。

これは「Powershellを管理者権限で実行してください」という意味のエラーです。

管理者権限がある場合は、Powershellを「管理者として実行」してからコマンドを実行することで設定できます。

パソコン全体へ影響するため、初心者にはあまりおすすめしません。

一時的に実行する方法

「パソコンの設定を一切変更したくない」「今回だけ一時的にスクリプトを動かしたい」という場合は、適用範囲を「Process」に指定するのがおすすめです。

Set-ExecutionPolicy RemoteSigned -Scope Process

このコマンドを実行すると、現在開いているPowerShellの画面(プロセス)の中だけで一時的に実行が許可されます。

その画面を閉じれば自動的に元の安全な状態に戻るため、最も安全性が高い方法です。

実行ポリシーを元に戻す方法

元の状態へ戻したい場合は、次のコマンドを実行します。

Set-ExecutionPolicy Restricted

CurrentUserスコープだけを元に戻す場合は、次のコマンドを実行します。

Set-ExecutionPolicy Restricted -Scope CurrentUser

ExecutionPolicyを変更しても解決しないときの確認ポイント

管理者によって制限されている

会社のパソコンでは、グループポリシーによってExecutionPolicyが固定されていることがあります。

次のコマンドで確認できます。

Get-ExecutionPolicy -List

表示される「MachinePolicy」や「UserPolicy」に値が入っている場合は、システム管理者によって設定されています。

この場合、自分では変更できません。

PowerShellを管理者として起動していない

パソコン全体の設定であるLocalMachineのポリシーを変更しようとすると、アクセス拒否のエラーになります。

この場合は、一度PowerShellの画面を閉じて、「PowerShellを管理者として実行」してPowerShellを起動する必要があります。

ただし、前述のとおり、初心者の方は管理者権限のいらない「-Scope CurrentUser」を使うのがおすすめです。

ExecutionPolicyを変更するメリット

  • PowerShellスクリプトを実行できる
  • 業務自動化ができる
  • 定型作業を効率化できる
  • バッチ処理や管理スクリプトを利用できる

PowerShellの便利さを活かすためには、ExecutionPolicyの理解は欠かせません。

作業の効率化にPowerShellはおすすめですが、AIも使って効率化してみましょう。

AIで仕事を効率化する方法|初心者でも今日からできる活用術
AIで仕事を効率化する方法を初心者向けに解説します。AIは完璧な成果物ではなく「60点の下書き」を作らせるのがコツ。メール作成を例に、プロンプトの書き方や業務自動化の始め方、活用時の注意点まで分かりやすく紹介します。

ExecutionPolicyを変更するデメリット

  • 悪意あるスクリプトを実行してしまう可能性がある
  • セキュリティリスクが増える
  • ダウンロードしたスクリプトは内容確認が必要

そのため、BypassやUnrestrictedを常用することはおすすめしません。

普段はRemoteSignedを利用するのが安全です。

よくある質問(FAQ)

RemoteSignedとBypassはどちらがおすすめですか?

通常はRemoteSignedがおすすめです。

Bypassは制限がほぼ無くなるため、使うとしても一時的な利用だけにしましょう。

ExecutionPolicyを変更しても危険ではありませんか?

CurrentUserへRemoteSignedを設定する程度であれば、多くの個人利用では問題ありません。

ただし、知らないサイトからダウンロードしたスクリプトは内容を確認してから実行してください。

ExecutionPolicyを変更できません

会社のパソコンではグループポリシーで制限されている場合があります。

その場合はシステム管理者へ相談してください。

まとめ

PowerShellで「このシステムではスクリプトの実行が無効になっています」というエラーが表示されても、慌てる必要はありません。

ExecutionPolicyは、PowerShellの安全性を高めるための仕組みです。

初心者であれば、次のコマンドを実行して、ポリシーを「RemoteSigned」に設定するだけで、多くの場合は問題なくPowerShellスクリプトを実行できます。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

まずは現在の設定を確認し、自分の用途に合ったExecutionPolicyへ変更してみましょう。

参考

タイトルとURLをコピーしました