【PowerShell講座】実行ポリシーについて

実行ポリシーについて

PowerShell講座です。

前回は、外部プログラムを実行する方法について紹介しました。

【PowerShell講座】外部プログラムを実行する

2020.01.10

今回は、実行ポリシーについてです。

スクリプトを実行するために必要な知識です。

環境は、Windows 10(64bit)、PowerShell 6.1.2 です。

それでは見ていきましょう。



実行ポリシーについて

PowerShell は、コマンドプロンプトよりも強力で Windows のほぼ全ての機能を操作できます。

そのため、間違った使い方をすると非常に危険です。

実行ポリシーは、スクリプトを実行するときにどんなファイルなら実行できるかを示したものです。

Get-ExecutionPolicy について

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

それでは、PowerShell を起動して、以下のコマンドレットを実行します。

Get-ExecutionPolicy

以下の内容が表示されました。

RemoteSigned

RemoteSigned は、署名付きスクリプト、ローカル保存の自作スクリプトは実行可能ということです。

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

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

Windows PowerShell の実行ポリシー

Windows PowerShell(Windows 8.1、Windows 10)の実行ポリシーは、デフォルトで Restricted になっています。

スクリプトを実行するには、実行ポリシーを変更する必要があります。

Set-ExecutionPolicy について

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

PowerShell 6.1.2(PowerShell Core)であれば、変更する必要はありません。

実行ポリシーの確認

練習で Windows PowerShell で実行ポリシーを変更してみます。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

メッセージを確認して、Y(はい)を入力します。

再度、Get-ExecutionPolicy を実行しましょう。

実行ポリシーが変更されました。

実行ポリシーの変更

ちなみに、-Scopeオプションの設定値は以下の通りです。

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

最後に

いかがでしょうか。

コマンドプロンプトと比較すると少し面倒に感じるかもしれませんが、慣れると問題ないかと思います。

強力なスクリプトなので、セキュリティは大切です。