243
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

PowerShell のスクリプトが実行できない場合の対処方法

概要

PowerShell でスクリプトを書いて実行したとき、以下のエラーが表示されてスクリプトが実行できない場合があります。

c:\work>PowerShell .\test.ps1
.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\work\test.ps1 を読み込むことができませ
ん。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

本記事ではエラーを回避してスクリプトを実行するための手順について記載します。

エラーの原因

Windows の初期設定では PowerShell のスクリプトの実行が実行ポリシーによって許可されていないことが原因です。

次のコマンドを実行することで PowerShell のスクリプトの実行ポリシーについて確認できます。

c:\work>PowerShell Get-ExecutionPolicy
Restricted

初期設定では Restricted の実行ポリシーとなっています。
このポリシーではすべてのスクリプトの実行が制限されています。

ちなみに、実行ポリシーとしては以下の種類があります。

実行ポリシー 署名あり 署名なし/ローカル 署名なし/非ローカル 説明
Restricted x x x すべてのスクリプトの実行を制限 (初期設定)
AllSigned o x x 署名のあるスクリプトのみ実行可能
RemoteSigned o o x ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能
Unrestricted o o すべてのスクリプトが実行可能だが非ローカル上のスクリプトは実行時に許可が必要
Bypass o o o すべてのスクリプトが実行可能

対処方法

対処方法としては以下の2つがあります。

(1) ExecutionPolicy オプションによる実行ポリシーの変更

PowerShell のスクリプトの実行時に引数へ ExecutionPolicy を指定して実行します。

c:\work>PowerShell -ExecutionPolicy RemoteSigned .\test.ps1
test

実行するスクリプトに対してのみ指定した実行ポリシーが適用されます。

(2) Set-ExecutionPolicy による実行ポリシーの変更 (恒久的)

実行ポリシーを恒久的に変更します。
この操作はシステム全体に影響を与えるため、管理者権限が必要となります。

c:\work>PowerShell Set-ExecutionPolicy RemoteSigned
c:\work>PowerShell .\test.ps1
test

以降は指定した実行ポリシーが適用されます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
243
Help us understand the problem. What are the problem?