※この記事は「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 | スクリプトの実行を行いません。 |
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)で試しに実行ポリシーを確認してみます(事前にインストールしたもの)。
この PowerShell Core は、わざわざインストールしないと使えないものだからデフォルトの実行ポリシーも異なるというわけです。
PowerShell Core(最新版)は、GitHub の PowerShell リポジトリの Release ページに揃っています。
興味のある方は、参考にどうぞ。
最後に
今回は、PowerShell(パワーシェル)の実行ポリシーについて、紹介しました。
比較のために Windows PowerShell と PowerShell Core どちらも使いました。
できることが幅広いので、このようなセキュリティが設定されています。