跳到主要内容

更改 Windows PowerShell 的执行策略


已读 0%
本篇目录
阅读设置
正文字号
18

设置仅保存在当前浏览器。

更改 Windows PowerShell 的执行策略

遇到“系统禁止运行脚本”时,先确认当前使用的是 Windows PowerShell 还是 PowerShell 7,并在同一个终端中检查策略。修改当前用户或当前进程的策略通常不需要管理员权限。

1. 查看生效策略和作用域

Get-ExecutionPolicy
Get-ExecutionPolicy -List

前者显示最终生效值,后者显示各作用域。优先级从高到低为:

MachinePolicy → UserPolicy → Process → CurrentUser → LocalMachine。

组织的组策略可能覆盖手动设置;即使某个作用域写入成功,最终生效值也不一定改变。

2. 选择修改范围

只想在当前终端运行本地脚本时,可使用进程级设置,关闭该终端后失效:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

需要长期运行当前用户的本地脚本时,先记录原值,再修改:

$previousPolicy = Get-ExecutionPolicy -Scope CurrentUser
$previousPolicy
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

按提示确认,再次执行 Get-ExecutionPolicy -List 和 Get-ExecutionPolicy。不要省略 -Scope;默认的 LocalMachine 会影响整台机器,并通常需要管理员权限。

3. 常见策略

策略 含义
Restricted 不运行脚本
RemoteSigned 本地脚本可运行;带互联网来源标记的脚本通常需要可信签名
AllSigned 本地和下载的脚本都需要可信签名
Unrestricted 允许运行,互联网来源的脚本可能有警告
Bypass 不执行策略检查,也不提供相应提示
Undefined 当前作用域没有设置,继续按其他作用域和系统默认值判定

默认值与系统版本、用途和已有配置有关,不应统一认定为 Restricted。执行策略也不是完整的安全边界;调整策略不会给脚本管理员权限。

如果仅一个已审查的下载脚本被来源标记阻止,可以针对这个文件处理,不必全局改为 Bypass:

Unblock-File -LiteralPath ".\reviewed-script.ps1"

请先把路径改为实际核实过的文件。

4. 恢复原设置

如果仍在记录 $previousPolicy 的同一终端中:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy $previousPolicy

也可以根据先前记录手动恢复。如果这个作用域原来是 Undefined,恢复为:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined

Undefined 是移除该作用域的设置,不能保证最终策略一定变为某个固定值;最后再检查一次生效结果。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录