コマンドレット説明書【Get-ExecutionPolicy】の使い方 (PowerShell v5.1)

こんにちは。チェシャ男です。(-皿-)

今回は、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>

指定されたスコープ内の実行ポリシーのみを取得します。

このパラメータで指定可能な値は次のとおりです。

  1. MachinePolicy:
    コンピューターのすべてのユーザーに対して、グループポリシーによって設定された実行ポリシー。
  2. UserPolicy:
    コンピュータの現在のユーザーに対して、グループポリシーによって設定された実行ポリシー。
  3. Process:
    現在のWindows PowerShellプロセスに対して設定されている実行ポリシー。
  4. CurrentUser:
    現在のユーザーに対して設定されている実行ポリシー。
  5. LocalMachine:
    コンピュータのすべてのユーザーに対して設定されている実行ポリシー。

-List [<SwitchParameter>]

優先順位の高い順に、スコープ毎の実行ポリシー値をすべて取得し一覧化します。

<CommonParameters>

このコマンドレットでは、

Verbose、Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、OutBuffer、PipelineVariable、OutVariable

の各共通パラメーターを使用することができます。

入力値

なし
(パイプラインを使用してコマンドレットに入力値を与えることはできません。)

出力値

Microsoft.PowerShell.ExecutionPolicy

備考

実行ポリシーはセキュリティ対策の一環として設定されています。スクリプトが実行できるかどうかを判断し、さらにスクリプト実行前にデジタル署名が必要なスクリプトかどうかを判断します。

実行ポリシーの優先順位は、

  1. コンピュータグループポリシー
  2. ユーザーグループポリシー
  3. プロセス実行ポリシー
  4. ユーザー実行ポリシー
  5. コンピュータ実行ポリシー

です。

使用例

例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 では署名(デジタル署名)されていない限り、インターネットからダウンロードされたスクリプトを実行できないようになっています。

コメントを残す

メールアドレスが公開されることはありません。