【PowerShell】このシステムではスクリプトの実行が無効になっているため~の対処方法


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

PowerShellの実行時、このシステムではスクリプトの実行が無効になっているため、ファイル *.ps1 を読み込むことができません。と表示される場合の対処方法について解説します。

はじめに

PowerShellの実行時に、下記のエラーが出力されて実行に失敗します。
本記事では、このような場合の対処方法について説明します。

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

原因

原因としては、PowerShellの実行ポリシーが、既定値の「Restricted」になっているからです。

まず、現在の実行ポリシーを確認してみます。
以下のように「Get-ExecutionPolicy」を実行することで、実行ポリシーが表示されます。
ここで「Restricted」と表示されない場合は、別の原因だと考えられます。

PS C:\workspace\PowerShell> Get-ExecutionPolicy
Restricted

では、「Restricted」についてですが、これは、Windowsの既定値となる実行ポリシーです。
個々のコマンドは実行可能ですが、全てのスクリプトの実行が禁止されています。

対処方法

ここでは、対処方法について説明します。

対処方法は、実行ポリシーの変更になります。

ですが、実行ポリシーを変更するとセキュリティ面で弱くなります。
なので、下記の2つの方法を説明していきたいと思います。

  • 実行ポリシーを、恒久的に変更する
  • 実行ポリシーを、一時的に変更する

実行ポリシーを、恒久的に変更する

ここでは、実行ポリシーを、恒久的に変更する方法を説明します。

実行ポリシーを変更するには、以下のコマンドを実行します。
*恒久的に変更する場合は、管理者として実行する必要があります。

PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

管理者として実行せずに、実行ポリシーを変更すると、以下のようなエラーとなります。

PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
' へのアクセスが拒否されました。 既定 (LocalMachine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプシ
ョンを使用して Windows PowerShell を起動してください。現在のユーザーの実行ポリシーを変更するには、"Set-ExecutionPolicy
-Scope CurrentUser" を実行してください。
発生場所 行:1 文字:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
   nd

以上で、実行ポリシーの変更は完了となります。

この状態で、PowerShellを実行してみたいと思います。

PS C:\workspace\PowerShell> .\test.ps1
PowerShell

エラーが発生せず、実行に成功しました。

また、セキュリティ面を考慮し、作業後は実行ポリシーを戻しておくことを推奨します。
実行ポリシーを戻す場合は、以下のコマンドを実行します。

PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy Restricted

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

実行ポリシーが戻っていることを確認します。

PS C:\workspace\PowerShell> Get-ExecutionPolicy
Restricted

「Restricted」に戻っていることが確認出来ました。作業は以上になります。

実行ポリシーを、一時的に変更する

ここでは、実行ポリシーを、一時的に変更する方法を説明します。

実行ポリシーを変更するには、以下のコマンドを実行します。
以下のように、スコープを「Process」に設定することで、一時的にポリシーが変更されます。
*スコープを「Process」に設定すると、設定したターミナルのみ実行ポリシーが変更された状態になります。

PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

以上で、実行ポリシーの変更は完了となります。

この状態で、PowerShellを実行してみたいと思います。

PS C:\workspace\PowerShell> .\test.ps1
PowerShell

エラーが発生せず、実行に成功しました。

記事は以上になります。
PowerShellの実行時に発生するエラーの対処方法として、実行ポリシーを変更する方法を2つ説明しました。セキュリティ面を考慮すると、一時的に変更する方が良いかと思われますが、自身の環境に合わせて使い分けて頂ければと思います。

コメント

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