【PowerShell】実行ポリシーとは

※この記事は「2021年4月24日」に更新しました。

今回は、PowerShell(パワーシェル)の実行ポリシーについて。

スクリプトを作ってみたけど、実行できないという方は、まずここを確認してください。

環境は、Windows 10(64bit)、PowerShell 6.12 と PowerShell 5.11 です。

比較のために、Windows PowerShell と PowerShell Core どちらも使っていきます。

実行ポリシーとは

PowerShell(パワーシェル)には、実行ポリシーというものがあります。

理由は、コマンドプロンプトよりも機能が強力で Windows のほぼ全ての機能を操作できてしまうからです。

つまり、間違った使い方をすると非常に危険だということです。

Get-ExecutionPolicy

Get-ExecutionPolicy を使えば、現在設定されている実行ポリシーを確認することができます。

それでは、Windows PowerShell(デフォルトでインストールされているもの)を起動します。

スタートメニュー → Windows PowerShell から Windows PowerShell をクリックします。

Get-ExecutionPolicy

私の場合、以下のように表示されました。

実行ポリシー

Restricted は、スクリプトの実行を行いませんという意味です。

実行ポリシーの設定値は以下の通りです。

実行ポリシーの設定値 意味
Restricted スクリプトの実行を行いません。
AllSigned 署名付きスクリプトは実行できます。
RemoteSigned 署名付きスクリプト、ローカル保存の自作スクリプトは実行できます。
Unrestricted すべてのスクリプトが実行できます。ただし、インターネットからダウンロードした未署名のスクリプトは実行するかどうか確認を求められる。
ByPass 何もブロックされずに警告もメッセージも表示されません。

Windows PowerShell の場合、デフォルトではスクリプトの実行はできないようになっています。

つまり、実行ポリシーを変更する必要があるというわけです。



PowerShell Core の実行ポリシー

クロスプラットフォームの PowerShell Core(PowerShell 6.12)で試しに実行ポリシーを確認してみます(事前にインストールしたもの)。

実行ポリシー

RemoteSigned になっています。

この PowerShell Core は、わざわざインストールしないと使えないものだからデフォルトの実行ポリシーも異なるというわけです。

PowerShell Core(最新版)は、GitHub の PowerShell リポジトリの Release ページに揃っています。

興味のある方は参考にどうぞ。

PowerShell Core のインストール
https://github.com/PowerShell/PowerShell/releases

Set-ExecutionPolicy

Set-ExecutionPolicy を使えば、実行ポリシーを変更することができます。

それでは、Windows PowerShell を起動します。

以下のコマンドレットを実行します。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

-Scope オプションの設定値は以下の通りです。

設定値 意味
Process 現在の Windows PowerShell プロセス
CurrentUser 現在のユーザー
LocalMachine コンピュータのすべてのユーザー

実行ポリシーには、スコープという考え方があり、これで適用範囲が決まっているというわけです。

これで RemoteSigned に変更されました。

実行ポリシー

最後に

いかがでしょうか。

今回は、PowerShell(パワーシェル)の実行ポリシーについて、紹介しました。

比較のために Windows PowerShell と PowerShell Core どちらも使いました。

コマンドプロンプトよりもできることが幅広いのでこのようなセキュリティが設定されています。