Skip to content

PowerShellで「running scripts is disabled on this system」エラーを解決する方法

問題の概要

Windows PowerShell で ionic serve などのコマンドを実行しようとすると、以下のエラーが発生することがあります:

ionic : File C:\Users\Lakshan\AppData\Roaming\npm\ionic.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ ~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

このエラーは、PowerShell の実行ポリシー(Execution Policy)が原因で発生します。Windows のデフォルト設定ではセキュリティ上の理由からスクリプトの実行が制限されています。

実行ポリシーとは

PowerShell の実行ポリシーは、スクリプトの実行を制御するセキュリティ機能です。主なポリシーには以下の種類があります:

  • Restricted: すべてのスクリプトの実行を禁止(Windows クライアントのデフォルト)
  • RemoteSigned: ローカルスクリプトは実行可、リモートスクリプトは署名が必要(推奨)
  • Unrestricted: すべてのスクリプトを警告付きで実行(非推奨)
  • Bypass: すべての警告と制限を無視(一時的な使用向け)

解決方法

方法1: 管理者権限で実行ポリシーを変更(永続的解決)

注意

管理者権限が必要です。システム全体に影響するため、慎重に操作してください。

  1. スタートメニューで「PowerShell」を検索
  2. 「管理者として実行」を選択
  3. 以下のコマンドを実行:
powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  1. 確認メッセージが表示されたら Y を入力して Enter

これでシステム全体の実行ポリシーが RemoteSigned に設定され、ローカルスクリプトの実行が可能になります。

方法2: 現在のプロセスのみに適用(一時的解決)

現在の PowerShell セッションのみで実行ポリシーを緩和する方法です:

powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

この変更は現在の PowerShell ウィンドウを閉じると元に戻ります。

方法3: 現在のユーザーのみに適用

現在ログインしているユーザーのみに実行ポリシーを設定する方法です:

powershell
Set-ExecutionPolicy -Scope CurrentUser

実行すると、設定するポリシーの入力を求められます。RemoteSigned または Bypass を入力してください。

各種オプションの詳細比較

powershell
Set-ExecutionPolicy RemoteSigned
# ローカルスクリプトは実行可能、リモートスクリプトはデジタル署名が必要
powershell
Set-ExecutionPolicy Bypass
# すべての警告と制限を無視(開発環境での一時的な使用向け)
powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# システム全体ではなく、現在のユーザーのみに設定
powershell
Set-ExecutionPolicy RemoteSigned -Scope Process
# 現在のPowerShellセッションのみに設定(再起動で解除)

現在の実行ポリシーを確認する

現在の設定を確認するには、以下のコマンドを使用します:

powershell
Get-ExecutionPolicy

すべてのスコープのポリシーを確認するには:

powershell
Get-ExecutionPolicy -List

セキュリティに関する注意点

重要

Unrestricted ポリシーはセキュリティリスクが高いため、一般的な使用には推奨されません。信頼できないスクリプトを実行すると、システムが危険にさらされる可能性があります。

  • RemoteSigned がバランスの取れた設定として推奨されます
  • 開発環境では Bypass を一時的に使用することもできますが、本番環境では避けてください
  • 定期的に実行ポリシーを見直し、必要以上に緩和しないようにしましょう

まとめ

PowerShell の「running scripts is disabled on this system」エラーは、実行ポリシーを適切に設定することで解決できます。セキュリティと利便性のバランスを考慮し、RemoteSigned ポリシーの使用をお勧めします。一時的な作業にはスコープを限定した設定を、恒久的な解決が必要な場合は管理者権限での設定を行ってください。