こんにちは。チェシャ男です。(-皿-)
今回は、Get-ExecutionPolicy について概要から使用例について簡単にご紹介します。
「コマンドレットリファレンス」カテゴリの記事では省略している情報を参照したい場合に本記事をご覧ください。
もくじ
はじめに
正式なヘルプを参照したい場合は、「Get-help Get-ExecutionPolicy -online」を実行し公式ヘルプをご覧ください。
また、本記事内の例は動作を確認していますが、動作を確約しているわけではありません。
Get-ExecutionPolicy の概要
Get-ExecutionPolicy では、現在のセッションに適用されている実行ポリシーを取得します。
[blogcard url=”https://cheshire-wara.com/powershell/ps-cmdlets/sequrity/get-executionpolicy/”]基本の構文
#パターン① Get-ExecutionPolicy [[-Scope] <ExecutionPolicyScope> {Process | CurrentUser | LocalMachine | UserPolicy | MachinePolicy}] [-List] [<CommonParameters>]
[] で囲まれたパラメーターは任意のオプションです。
{}で囲まれた箇所は要素を選択してください。
<>で囲まれた箇所はオブジェクトの型名を示しています。
動作の説明
Get-ExecutionPolicy では、現在のセッションに適用されている実行ポリシーを取得します。
実行ポリシーには、「Set-ExecutionPolicy」または「グループポリシーの設定」により指定された実行ポリシーが適用されます。尚、 デフォルト値は基本的に Restricted です。
パラメーターを使用しなければ、現在のセッションで有効になっている実行ポリシーを返します。
List パラメーターを使用すると適用可能なスコープについての実行ポリシーを取得し一覧化します。
各パラメータについて
-Scope <ExecutionPolicyScope>
指定されたスコープ内の実行ポリシーのみを取得します。
このパラメータで指定可能な値は次のとおりです。
- MachinePolicy:
コンピューターのすべてのユーザーに対して、グループポリシーによって設定された実行ポリシー。 - UserPolicy:
コンピュータの現在のユーザーに対して、グループポリシーによって設定された実行ポリシー。 - Process:
現在のWindows PowerShellプロセスに対して設定されている実行ポリシー。 - CurrentUser:
現在のユーザーに対して設定されている実行ポリシー。 - LocalMachine:
コンピュータのすべてのユーザーに対して設定されている実行ポリシー。
-List [<SwitchParameter>]
優先順位の高い順に、スコープ毎の実行ポリシー値をすべて取得し一覧化します。
<CommonParameters>
このコマンドレットでは、
Verbose、Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、OutBuffer、PipelineVariable、OutVariable
の各共通パラメーターを使用することができます。
入力値
なし
(パイプラインを使用してコマンドレットに入力値を与えることはできません。)
出力値
Microsoft.PowerShell.ExecutionPolicy
備考
実行ポリシーはセキュリティ対策の一環として設定されています。スクリプトが実行できるかどうかを判断し、さらにスクリプト実行前にデジタル署名が必要なスクリプトかどうかを判断します。
実行ポリシーの優先順位は、
- コンピュータグループポリシー
- ユーザーグループポリシー
- プロセス実行ポリシー
- ユーザー実行ポリシー
- コンピュータ実行ポリシー
です。
使用例
例1:現在の実行ポリシーを取得する
PS C:\>Get-ExecutionPolicy Restricted
コンピュータの現在の実行ポリシーを取得します。
例2:実行ポリシーを設定し確認する
PS C:\>Set-ExecutionPolicy -ExecutionPolicy RemoteSigned PS C:\> PS C:\>Get-ExecutionPolicy RemoteSigned
実行ポリシーを設定し、有効な実行ポリシーを確認しています。この例のように、グループポリシーの設定がない場合はコンピュータ実行ポリシーが適用されています。
例3:現在のセッションの実行ポリシーをすべて取得する
PS C:\>Get-ExecutionPolicy -List Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Restricted LocalMachine RemoteSigned PS C:\>Get-ExecutionPolicy Restricted
現在のセッション内のすべての実行ポリシーと有効な実行ポリシーを取得し一覧化しています。
ポリシーは優先順位の高い順にリスト化されます。2番目のコマンドレットでは、現在適用されている中で最も優先順位の高い実行ポリシーを表示しています。
例4:署名無しスクリプトの実行が制限されている
PS C:\>Get-ExecutionPolicy RemoteSigned PS C:\>.\Hoge.ps1 .\Hoge.ps1 : File .\Hoge.ps1 cannot be loaded. The file .\Hoge.ps1 is not digitally signed. The script will not execute on the system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 + .\Hoge.ps1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
2番目のコマンドレットは、実行ポリシーが RemoteSigned の時に署名の無いスクリプトを実行したときの結果です。 RemoteSigned では署名(デジタル署名)されていない限り、インターネットからダウンロードされたスクリプトを実行できないようになっています。