PowerShell 実行ポリシーとポリシーの変更

2020/04/18

最初に少し設定をする必要があります。ここでは PowerShell を管理者モードで起動して作業を行います。管理者モードでの起動の仕方は次の通りです。

  • メニューから Windows PowerShell を探す
  • Windows PowerShell を右クリックして 管理者として実行 を選ぶ

PowerShell を管理者で実行する

PowerShell の実行ポリシーについて

PowerShell の初期値は、PowerShell スクリプトファイル(拡張子が .ps1)を実行することはできません。これは Windows の過去の歴史によるもののようで、TechNet のコラムにもありました。このままでは保存したスクリプトファイル(プログラム)を実行することができないので、スクリプトとして利用する際には実行ポリシーを変更する必要があります。

TechNet: about_Execution_Policies にも次の記載があります。

既定のポリシーは "Restricted" です。

Restricted – 既定の実行ポリシーです。

  • 個々のコマンドは許可されますが、スクリプトは実行されません。 – 書式設定ファイルと構成ファイル (.ps1xml)、モジュール スクリプトファイル (.psm1)、および Windows PowerShell プロファイル (.ps1) を含む、 すべてのスクリプトファイルの実行が禁止されます。

デフォルトでは、コマンドは OK だけど、ファイルにしてのスクリプトは NG ということですね。

現在の実行ポリシーの確認

PS> Get-ExecutionPolicy
Restricted

上記例では規定の実行ポリシーの Restricted となっています。

実行ポリシーの種類と変更のコマンド

PowerShell を管理者モードで起動して作業を行います。

#署名のあるファイルのみ実行可能
Set-ExecutionPolicy AllSigned

#ダウンロードしたファイルは署名がないと実行不可
Set-ExecutionPolicy RemoteSigned

#署名なしのダウンロードしたファイルも実行可能だが警告がでる
Set-ExecutionPolicy Unrestricted

#署名なしのダウンロードしたファイルも実行可能で警告もでない
Set-ExecutionPolicy Bypass

ファイルからの実行を許可する(セキュリティポリシーの変更)

PowerShell を管理者モードで起動して作業を行います。

PS> Set-ExecutionPolicy remotesigned

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

ポリシー絡みのエラー

実行ポリシーの変更を一般ユーザーで行うと出るエラー

PS> Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。 既定 (LocalMachine) のスコープの実行ポ
リシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してください。現在のユーザーの実行ポリシーを変更するには、"Set-ExecutionPolicy -Scope CurrentUser" を実行してください。
発生場所 行:1 文字:1
+ Set-ExecutionPolicy AllSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand

実行ポリシーを変更せずにスクリプトファイルを実行すると出るエラー

スクリプトの実行がシステムで無効になっているため、ファイル C:\Users\miyamiya\Desktop\VBS\hoge.ps1 を読み込めません。詳細については、「get-help about_
signing」と入力してヘルプを参照してください。
発生場所 行:1 文字:39
+ C:\Users\miyamiya\Desktop\hoge.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) []、PSSecurityException
    + FullyQualifiedErrorId : RuntimeException