约 2244 字

约 11 分钟

#执行策略

#简介

执行策略(Execution Policy)是 Windows 上的一项安全功能,用于控制在 PowerShell 中运行脚本的条件。它主要用于防止误执行脚本,而不是阻止恶意用户绕过限制。

执行策略分为多个作用域,可以在不同层级上分别设置。

#查看执行策略

查看当前生效的执行策略:

> Get-ExecutionPolicy

查看所有作用域的策略:

> Get-ExecutionPolicy -List

输出会列出 MachinePolicy、UserPolicy、Process、CurrentUser 和 LocalMachine 等作用域。未显式设置的作用域显示为 Undefined。

#作用域

作用域说明
Process仅对当前 PowerShell 进程有效,关闭后失效
CurrentUser仅对当前用户有效
LocalMachine对本地计算机上的所有用户有效,通常需要管理员权限
MachinePolicy由组策略设置,优先级最高
UserPolicy由当前用户的组策略设置

当多个作用域同时设置时,优先级从高到低通常为:MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine。

#设置执行策略

为当前用户设置 RemoteSigned:

> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

仅为当前会话临时设置 Bypass:

> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

为本地计算机设置策略,需要以管理员身份运行:

> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

将当前用户的策略恢复为未定义:

> Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

#常见策略类型

策略说明
Restricted不允许运行脚本,只允许执行单条命令
RemoteSigned本地脚本可以运行;从 Internet 下载的脚本需要有效签名
Unrestricted不限制脚本运行,不建议在生产环境使用
Bypass不阻止任何操作,也不显示警告或提示
AllSigned所有脚本都必须由受信任的发布者签名
Undefined未设置策略,由更高优先级或系统默认值决定

RemoteSigned 是 Windows 客户端上较常用的折中方案。从 Internet 下载的脚本可能带有“来自 Internet”的标记,可以使用 Unblock-File 解除阻止:

> Unblock-File -Path ./script.ps1

#注意事项

  • Set-ExecutionPolicy -Scope Process 只影响当前会话,适合临时运行可信脚本。
  • 组策略设置的策略会覆盖用户手动设置。
  • 在 Linux 和 macOS 上,运行脚本主要受文件权限和 shebang 影响,与执行策略无关。
  • 修改 LocalMachine 作用域前应评估对整台计算机上其他用户的影响。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2