Get-ExecutionPolicy

获取当前会话的执行策略。

语法

Get-ExecutionPolicy
   [[-Scope] <ExecutionPolicyScope>]
   [-List]
   [<CommonParameters>]

说明

若要按优先级顺序显示每个范围的执行策略,请使用 Get-ExecutionPolicy -List。 若要查看 PowerShell 会话 Get-ExecutionPolicy 的有效执行策略,无需参数。

有效执行策略由由设置和组策略设置的执行Set-ExecutionPolicy策略确定。

有关详细信息,请参阅 about_Execution_Policies

示例

示例 1:获取所有执行策略

此命令按优先级顺序显示每个范围的执行策略。

Get-ExecutionPolicy -List

Scope          ExecutionPolicy
-----          ---------------
MachinePolicy  Undefined
UserPolicy     Undefined
Process        Undefined
CurrentUser    AllSigned
LocalMachine   Undefined

Get-ExecutionPolicy cmdlet 使用 List 参数显示每个范围的执行策略。

示例 2:设置执行策略

此示例演示如何为本地计算机设置执行策略。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       AllSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy cmdlet 使用 ExecutionPolicy 参数指定 RemoteSigned 策略。 Scope 参数指定默认作用域值 LocalMachine。 若要查看执行策略设置,请使用 Get-ExecutionPolicy 带有 List 参数的 cmdlet。

示例 3:获取有效的执行策略

此示例演示如何显示 PowerShell 会话的有效执行策略。

PS> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       AllSigned
 LocalMachine    RemoteSigned

PS> Get-ExecutionPolicy

AllSigned

Get-ExecutionPolicy cmdlet 使用 List 参数显示每个范围的执行策略。 该 Get-ExecutionPolicy cmdlet 在没有参数的情况下运行,以显示有效的执行策略 AllSigned

示例 4:取消阻止脚本以运行脚本而不更改执行策略

此示例演示 RemoteSigned 执行策略如何阻止运行未签名脚本。

最佳做法是读取脚本的代码,并在使用 Unblock-File cmdlet 之前验证它是否安全。 cmdlet Unblock-File 取消阻止脚本,以便它们可以运行,但不会更改执行策略。

PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

PS> Unblock-File -Path .\Start-ActivityTracker.ps1

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

Task 1:

使用 Set-ExecutionPolicyExecutionPolicy 参数指定 RemoteSigned 策略。 策略为默认作用域 LocalMachine 设置。

Get-ExecutionPolicy cmdlet 显示 RemoteSigned 是当前 PowerShell 会话的有效执行策略。

Start-ActivityTracker.ps1脚本从当前目录执行。 远程签名阻止该脚本,因为脚本未进行数字签名。

对于此示例,脚本的代码已查看并验证为安全运行。 Unblock-File cmdlet 使用 Path 参数取消阻止脚本。

若要验证 Unblock-File 是否未更改执行策略, Get-ExecutionPolicy 请显示有效的执行策略 RemoteSigned

脚本 Start-ActivityTracker.ps1 从当前目录执行。 脚本开始运行,因为它已被 Unblock-File cmdlet 取消阻止。

参数

-List

获取按优先级顺序列出的会话的所有执行策略值。 默认情况下, Get-ExecutionPolicy 仅获取有效的执行策略。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

指定受执行策略影响的范围。

有效执行策略由优先级顺序确定,如下所示:

  • MachinePolicy。 为计算机的所有用户设置组策略。
  • UserPolicy。 为计算机的当前用户设置组策略。
  • 过程。 仅影响当前的 PowerShell 会话。
  • CurrentUser。 仅影响当前用户。
  • LocalMachine。 影响计算机所有用户的默认范围。
Type:ExecutionPolicyScope
Accepted values:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Position:0
Default value:Effective execution policy
Required:False
Accept pipeline input:True
Accept wildcard characters:False

输入

None

Get-ExecutionPolicy 不接受来自管道的输入。

输出

ExecutionPolicy

cmdlet 始终在 Linux 和 macOS 平台上返回 “不受限制 ”。

备注

执行策略是 PowerShell 安全策略的一部分。 执行策略确定是否可以加载配置文件,例如 PowerShell 配置文件或运行脚本。 并且,脚本是否必须在运行之前进行数字签名。