【PowerShell】実行ポリシーとは

※この記事は「2023年3月3日」に更新しました。

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

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

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

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

タカフミ
記事を書いている管理人の経歴は、以下の通りです。
  • 基本情報技術者資格所有者(ソフト開発の国家資格)
  • WordPress歴、10年以上
  • パソコン販売歴、約5年

実行ポリシーとは

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

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

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

Get-ExecutionPolicy

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

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

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

Get-ExecutionPolicy

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

実行ポリシー
タカフミ
Restricted は、スクリプトの実行を行いませんという意味です。

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

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

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

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



Set-ExecutionPolicy

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

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

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

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

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

設定値 意味
Process 現在の Windows PowerShell プロセス
CurrentUser 現在のユーザー
LocalMachine コンピュータのすべてのユーザー
タカフミ
実行ポリシーには、スコープという考え方があります。

これで適用範囲が決まっているというわけです。

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

実行ポリシー

PowerShell Core の実行ポリシー

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

実行ポリシー
タカフミ
RemoteSigned になっています。

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

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

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

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

最後に

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

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

できることが幅広いので、このようなセキュリティが設定されています。