PowerShell 执行策略

在使用 SAPIEN 的PowerShell Studio时出现如下错误:

无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
ERROR: 所在位置 行:1 字符: 2
ERROR: + &"C:\ProgramData\SAPIEN\Help Data\PowerShell Studio\ComputerPrompt\Co ...
ERROR: +  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : SecurityError: (:) [],PSSecurityException
ERROR:     + FullyQualifiedErrorId : UnauthorizedAccess

意思是说授权有问题,需要查阅https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies

于是对PowerShell的执行策略进行了查阅,总结如下:

一、执行策略级别:PolicyName

所谓级别,是自己的理解,也就是执行限制的范围。

序号

级别

说明

1

AllSigned

  • 脚本可以运行。

  • 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。

  • 从尚未分类为受信任或不受信任的发布者运行脚本之前,会提示你。

  • 运行已签名但恶意脚本的风险。

2

Bypass

  • 不阻止任何操作,并且没有任何警告或提示。

  • 此执行策略适用于 PowerShell 脚本内置于较大应用程序的配置,或针对 PowerShell 是具有自身安全模型的程序基础的配置。

3

Default

  • 设置默认执行策略。

  • Restricted 适用于 Windows 客户端的 。

  • 适用于 Windows 服务器的 RemoteSigned

4

RemoteSigned

  • Windows Server 计算机的默认执行策略。

  • 脚本可以运行。

  • 需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。

  • 不需要在本地计算机上编写且未从 Internet 下载的脚本上使用数字签名。

  • 如果未阻止脚本(例如使用 cmdlet),则运行从 Internet 下载且未签名的 Unblock-File 脚本。

  • 运行来自 Internet 以外的源的未签名脚本以及可能是恶意的已签名脚本的风险。

5

Restricted

  • Windows 客户端计算机的默认执行策略。

  • 允许单个命令,但不允许脚本。

  • 阻止运行所有脚本文件,包括格式化和配置文件 () .ps1xml 、模块脚本文件 (.psm1) ,以及 PowerShell 配置文件 () .ps1

6

Undefined

  • 当前范围内没有设置执行策略。

  • 如果所有范围内的执行策略都是 Undefined,则有效的执行策略 Restricted 适用于 Windows 客户端, RemoteSigned 适用于 Windows Server。

7

Unrestricted

  • 非 Windows 计算机的默认执行策略,无法更改。

  • 未签名的脚本可以运行。 存在运行恶意脚本的风险。

  • 在运行不来自本地 Intranet 区域的脚本和配置文件之前警告用户。

二、执行策略范围:scope

可以设置仅在特定范围内有效的执行策略。有效值为 ScopeMachinePolicyUserPolicyProcessCurrentUserLocalMachine。 设置执行策略时,LocalMachine 是默认设置。

序号

范围

说明

1

MachinePolicy

由组策略为计算机的所有用户设置。

2

UserPolicy

由计算机当前用户的组策略设置。

3

Process

范围 Process 仅影响当前 PowerShell 会话。 执行策略保存在环境变量 $env:PSExecutionPolicyPreference中,而不是注册表中。 关闭 PowerShell 会话时,变量和值将被删除。

4

CurrentUser

执行策略仅影响当前用户。 它存储在 HKEY_CURRENT_USER 注册表子项中。

5

LocalMachine

执行策略会影响当前计算机上的所有用户。 它存储在 HKEY_LOCAL_MACHINE 注册表子项中。

三、查看当前执行策略

若要获取当前 PowerShell 会话的有效执行策略,请使用 Get-ExecutionPolicy cmdlet

  1. 获取当前执行策略:

Get-ExecutionPolicy

类似的结果:

AllSigned

  1. 获取影响当前会话的所有执行策略并按优先顺序显示:

Get-ExecutionPolicy -List

类似结果:

Scope ExecutionPolicy

----- ---------------

MachinePolicy Undefined

UserPolicy Undefined

Process Undefined

CurrentUser AllSigned

LocalMachine RemoteSigned

在这种情况下,有效执行策略为 AllSigned ,因为当前用户的执行策略优先于为本地计算机设置的执行策略。

若要获取为特定范围设置的执行策略,请使用 ScopeGet-ExecutionPolicy参数。

  1. 获取 CurrentUser 范围的执行策略:

Get-ExecutionPolicy -Scope CurrentUser

类似的结果:

AllSigned

四、更改执行策略

若要更改 Windows 计算机上的 PowerShell 执行策略,请使用 Set-ExecutionPolicy cmdlet。 更改将立即生效,无需重启 PowerShell

如果为 范围 LocalMachineCurrentUser 设置执行策略,则更改将保存在注册表中,并在再次进行更改之前保持有效。

如果为 Process 范围设置执行策略,则不会将其保存在注册表中。 执行策略将一直保留到当前进程和任何子进程关闭为止。

备注: 📌
在 Windows Vista 和更高版本的 Windows 中,若要运行更改本地计算机( LocalMachine 范围)执行策略的命令,请使用 “以管理员身份运行” 选项启动 PowerShell。
  1. 更改策略执行命令

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

例如:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  1. 更改特定范围内执行策略

Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

例如:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

备注: 📌
用于更改执行策略的命令可以成功,但仍不能更改有效的执行策略。
例如,为本地计算机设置执行策略的命令可以成功,但会被当前用户的执行策略覆盖。

五、删除执行策略

若要删除特定范围的执行策略,请将执行策略设置为 Undefined

  1. 删除本地计算机所有用户的执行策略:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
  1. 删除当前用户的执行策略:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

如果未在任何范围内设置执行策略,则有效的执行策略为 Restricted,这是 Windows 客户端的默认策略。

六、为会话设置策略

若要为新会话设置执行策略,请在命令行(如 cmd.exe 或 )启动 PowerShell,然后使用 的 pwsh.exe ExecutionPolicy 参数设置执行策略。

pwsh.exe -ExecutionPolicy AllSigned
注意:
pwsh.exe一定要设置路径环境变量,以便能够找到该程序!

设置的执行策略不会存储在注册表中。 而是存储在 环境变量中 $env:PSExecutionPolicyPreference 。 关闭在其中设置了策略的会话时,变量将被删除。 不能通过编辑变量值来更改策略。

在会话期间,为会话设置的执行策略优先于在本地计算机或当前用户的注册表中设置的执行策略。 但是,它不优先于使用组策略设置的执行策略。

今天是2023年大年初一,祝各位新年快乐,学习进步,事业有成!💖

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值