约 1813 字

约 9 分钟

#执行策略限制

在 Windows 上运行 .ps1 脚本时,经常遇到类似错误:

无法加载文件 C:\scripts\test.ps1,因为在此系统上禁止运行脚本。

这不是脚本本身的问题,而是 Windows PowerShell 的 执行策略(Execution Policy) 阻止了脚本运行。

#查看执行策略

> Get-ExecutionPolicy
Restricted

Restricted 表示禁止运行任何脚本。还可以查看各作用域的具体设置:

> Get-ExecutionPolicy -List
Scope          ExecutionPolicy
-----          ---------------
MachinePolicy  Undefined
UserPolicy     Undefined
Process        Undefined
CurrentUser    Undefined
LocalMachine   Restricted

执行策略按作用域生效,优先级从高到低依次为:MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine。

#修改当前用户的执行策略

推荐只修改当前用户,避免影响整台机器:

> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
  • RemoteSigned 允许运行本地创建的脚本;从网络下载的脚本必须有可信签名。
  • CurrentUser 作用域不需要管理员权限。
  • 修改后可以用 Get-ExecutionPolicy -List 确认。

如果只是临时运行一次,可以只对当前进程生效:

> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

也可以在不修改系统设置的情况下启动一个新会话:

> pwsh -ExecutionPolicy Bypass -File ./script.ps1

#安全提示

从网络下载的脚本可能被标记为“来自 Internet”,即使策略为 RemoteSigned 也会被拦截。确认文件可信后,可以解除锁定:

> Unblock-File -Path ./downloaded.ps1

#平台差异

执行策略只在 Windows 上生效。Linux 和 macOS 上的 PowerShell 不检查执行策略,脚本能否运行取决于文件权限和调用方式:

$ chmod +x ./script.ps1
$ ./script.ps1

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2