PowerShell 执行策略

2025年3月17日 | 阅读 3 分钟

执行策略是 PowerShell 的一个功能,它指定了 PowerShell 加载配置文件和运行脚本的条件。

在 Windows 操作系统上,我们可以为当前用户、本地计算机或特定会话设置执行策略。当前用户和本地计算机的执行策略存储在注册表中,而特定会话的执行策略仅存储在内存中,当会话关闭时就会丢失。

在非 Windows 操作系统上,默认执行策略是不受限制的。并且此策略无法更改。

PowerShell 执行策略

以下是 PowerShell 执行策略

  • AllSigned(全部签名)
  • Bypass(绕过)
  • RemoteSigned(远程签名)
  • Restricted(受限)
  • 未定义
  • Unrestricted(不受限制)

AllSigned(全部签名)

  • 只有那些由受信任的发布者使用数字签名签名的脚本才能运行。
  • 在运行脚本之前,此策略会提示您确认您是否信任发布者。

Bypass(绕过)

  • 在此策略中,没有任何东西被阻止。
  • 不提供任何警告,也不提供任何提示。
  • Bypass 策略主要设计用于将 PowerShell 脚本构建到更大的应用程序中的配置。

RemoteSigned(远程签名)

  • 这是 Windows Server 计算机的默认执行策略。
  • 此策略要求从受信任的发布者对配置文件和脚本进行数字签名。这些文件和脚本是从互联网下载的,包括电子邮件和即时消息程序。
  • 此执行策略不需要对在本地计算机上编写的脚本进行数字签名。

Restricted(受限)

  • 此执行策略默认适用于 Windows 客户端计算机。
  • 它不允许运行脚本,但允许单个命令。

未定义

  • 未在当前范围内定义任何执行策略。

Unrestricted(不受限制)

  • 这是非 Windows 计算机的默认执行策略。
  • 此策略执行未签名的脚本。

执行策略范围

以下是执行策略范围的有效值

  • MachinePolicy(机器策略)
  • UserPolicy(用户策略)
  • 过程
  • CurrentUser(当前用户)
  • LocalMachine(本地机器)

MachinePolicy(机器策略)

此范围由组策略为所有计算机用户设置。

UserPolicy(用户策略)

此范围由组策略为计算机的当前用户设置。

过程

此范围仅影响 PowerShell 的当前会话。

CurrentUser(当前用户)

在此范围内,执行策略仅影响当前范围。

LocalMachine(本地机器)

在此范围内,执行策略影响当前计算机上的所有用户。

管理执行策略

  • 我们可以使用以下 Cmdlet 获取当前 PowerShell 会话的有效执行策略
  • 我们可以使用以下命令获取影响当前会话的所有执行策略。并且,使用此命令,我们按优先级顺序显示它们。

上述命令的输出如下所示

PowerShell Execution Policy
  • 我们可以使用 -Scope 参数来获取特定范围的执行策略。例如,以下命令获取 LocalMachine 范围的执行策略

上述命令将显示输出为 RemoteSigned

更改执行策略

  • 我们可以在 Windows 计算机上使用 Set-ExecutionPolicy cmdlet 来更改 PowerShell 的执行策略。您所做的更改会立即生效。您不需要重新启动 PowerShell 窗口。
  • 如果您为 CurrentUserLocalMachine 范围的执行策略进行了一些更改,则这些更改将保存在注册表中,并且它们将保持有效,直到您再次更改它们。
  • 如果您对 Process 范围的执行策略进行了更改,则它们不会保存在注册表中。
  • 以下块描述了用于更改执行策略的语法

删除执行策略

我们可以通过将执行策略设置为 Undefined 来删除特定范围的执行策略。

示例:此示例删除本地计算机所有用户的执行策略。


下一主题PowerShell DSC