📜  PowerShell执行策略

📅  最后修改于: 2021-01-08 02:53:32             🧑  作者: Mango

PowerShell执行策略

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

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

在非Windows操作系统上,默认执行策略不受限制。这个政策不能改变。

PowerShell执行策略

以下是PowerShell执行策略:

  • 全部签名
  • 旁路
  • 远程签名
  • 受限制的
  • 未定义
  • 无限制

全部签名

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

旁路

  • 在此政策中,没有任何障碍。
  • 没有警告,也没有提示。
  • 绕过策略主要是针对将PowerShell脚本内置到大型应用程序中的那些配置而设计的。

远程签名

  • 这是Windows Server计算机的默认执行策略。
  • 此策略要求在配置文件和脚本上有来自受信任的发布者的数字签名。这些文件和脚本是从Internet下载的,其中包括电子邮件和即时消息传递程序。
  • 该执行策略不需要在本地计算机上编写的那些脚本上的数字签名。

受限制的

  • Windows客户端计算机默认情况下可以使用此执行策略。
  • 它不允许运行脚本,但允许单独的命令。

未定义

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

无限制

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

执行政策范围

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

  • 机器政策
  • 用户政策
  • 处理
  • 当前用户
  • 本地机器

机器政策

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

用户政策

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

处理

此作用域仅影响PowerShell的当前会话。

当前用户

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

本地机器

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

管理执行政策

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

上面命令的输出如下所示:

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

上面的命令将输出显示为RemoteSigned

更改执行政策

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

删除执行政策

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

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

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine