Help us understand the problem. What is going on with this article?

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

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

Targityen
帳票パッケージプロダクトの開発・保守を行っています。 日々の業務の効率化の方法や技術情報をまとめていきたいと思います。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした