【Bug已解决】OpenClaw 报错无法运行 .ps1 脚本:因为在此系统上禁止运行脚本 解决方案 【Bug已解决】OpenClaw 报错无法运行 .ps1 脚本因为在此系统上禁止运行脚本 解决方案1. 问题描述在 Windows 上通过 npm 全局安装 OpenClaw 后执行命令时尤其是通过某些封装脚本或 npm 生成的.ps1包装文件调用遇到这样的报错无法加载文件 C:\Users\用户名\AppData\Roaming\npm\openclaw.ps1因为在此系统上禁止运行脚本。 有关详细信息请参阅 https://go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 CategoryInfo : SecurityError: (:) []PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess1.1 具体现象命令提示符CMD里执行完全正常PowerShell 里却报这个安全错误换成公司配发的电脑通常有更严格的安全策略更容易复现有些人发现自己之前能正常用某次系统更新或安全策略调整后突然不能用了报错信息明确提到禁止运行脚本但很多人第一反应会去检查安装是否有问题而不是执行策略这是npm 全局安装的命令行工具在 Windows 上会同时生成.cmd和.ps1两种包装脚本而 PowerShell 默认的脚本执行策略往往会拦截.ps1脚本的运行这是一个和 OpenClaw 本身完全无关、但表现形式容易让人误判的经典 Windows 安全策略问题。2. 原因分析Windows PowerShell 出于安全考虑默认的执行策略Execution Policy通常是Restricted完全禁止运行任何脚本或者AllSigned只允许运行经过数字签名的脚本这是为了防止恶意脚本未经用户确认就静默执行。npm 在 Windows 上为全局命令生成的包装文件通常包含三种文件用途openclaw.cmd供 CMD命令提示符调用openclaw.ps1供 PowerShell 调用openclaw无后缀Shebang 脚本供 Git Bash / WSL 等类 Unix 环境调用当你在 PowerShell 里直接输入openclawPowerShell 会优先尝试执行对应的.ps1文件——而这一步如果当前执行策略是Restricted就会被直接拦截抛出上述的安全错误。用一张流程图梳理判断逻辑PowerShell 中输入 openclaw ↓ PowerShell 在 PATH 中找到 openclaw.ps1 ↓ 检查当前用户/系统的脚本执行策略Execution Policy ↓ 策略是否允许运行本地脚本 ├─ 允许RemoteSigned/Unrestricted → 正常执行 └─ 不允许Restricted/AllSigned → 禁止运行脚本错误3. 解决方案方案一调整当前用户的执行策略为 RemoteSigned最推荐RemoteSigned是一个比较均衡的策略允许运行本地编写/生成的脚本但要求从网络下载的脚本必须有数字签名安全性和易用性之间取得了较好的平衡# 以普通用户身份运行即可只影响当前用户不需要管理员权限 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # 确认修改结果 Get-ExecutionPolicy -List方案二临时绕过执行策略只对当前会话生效不做永久修改如果不想永久修改系统策略可以只在当前 PowerShell 会话里临时放宽限制Set-ExecutionPolicy Bypass -Scope Process openclaw --version关闭当前终端窗口后这个临时设置会自动失效不影响其他会话或以后新开的窗口。方案三直接调用.cmd文件而非依赖 PowerShell 自动匹配如果不方便修改执行策略比如企业受管理的电脑可以绕开.ps1脚本显式调用.cmd版本openclaw.cmd --version或者干脆改用命令提示符CMD而不是 PowerShell 来执行 OpenClaw 相关命令。方案四企业受限电脑上联系 IT 部门统一调整组策略如果执行策略是通过企业组策略Group Policy统一强制设置的个人用户执行Set-ExecutionPolicy可能会被组策略覆盖而不生效。这种情况下需要联系 IT/安全部门说明具体的开发需求评估是否可以针对开发人员账户单独放宽策略而不是绕过安全合规要求私自修改。方案五使用跨平台 PowerShellpwsh并单独确认其执行策略如果同时安装了新版跨平台 PowerShellpwsh.exe需要注意它和 Windows 自带的旧版 PowerShellpowershell.exe的执行策略是分别独立配置的需要针对实际使用的版本单独确认和调整# 在 pwsh 中单独设置 pwsh -Command Set-ExecutionPolicy RemoteSigned -Scope CurrentUser4. 各方案对比总结方案适用场景推荐指数调整为 RemoteSigned个人开发机的标准长期解决方案⭐⭐⭐⭐⭐会话级临时绕过只是临时用一次不想改永久配置⭐⭐⭐⭐直接调用 .cmd 文件不方便修改执行策略的场景⭐⭐⭐⭐联系 IT 调整组策略企业受管理电脑策略被组策略锁定⭐⭐⭐单独确认 pwsh 策略同时使用新旧两版 PowerShell 的场景⭐⭐⭐5. 常见问题 FAQ5.1 把执行策略设置为Unrestricted是不是更省心不建议。Unrestricted会允许运行任何脚本包括未签名的、从网络下载的脚本安全风险明显更高。RemoteSigned已经能满足绝大多数日常开发需求同时保留了对网络脚本的签名校验是更均衡的选择。5.2 这个问题是不是意味着 OpenClaw 安装出了问题不是。这个报错和 OpenClaw 本身的安装/代码质量完全无关纯粹是 Windows PowerShell 的安全策略在正常发挥拦截作用任何通过 npm 全局安装并生成.ps1包装脚本的工具不只是 OpenClaw都可能遇到同样的问题。5.3 修改执行策略会不会影响系统里其他软件的正常运行RemoteSigned策略只是放宽了对本地脚本的限制对系统正常运行的各类原生程序.exe没有任何影响绝大多数正规软件的安装和运行也不依赖用户级的 PowerShell 脚本执行策略。5.4 公司电脑上没有权限执行Set-ExecutionPolicy还有别的办法吗优先尝试方案三直接调用.cmd文件或者干脆改用命令提示符CMD执行相关命令这两种方式都不涉及 PowerShell 脚本执行策略能在不需要额外权限的情况下绕开这个限制。5.5 团队新人入职时如何避免每个人都要单独排查一次这个问题建议在团队的开发环境搭建文档Onboarding 文档里明确写出Windows 用户需要执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser这一步骤作为环境初始化的标准步骤之一而不是等每个人各自遇到报错时才现场排查。5.6 macOS/Linux 上有类似的脚本执行被禁止的问题吗有类似但不完全相同的机制——macOS/Linux 上脚本文件需要有可执行权限chmod x才能直接运行如果遇到Permission denied报错思路是检查文件权限而不是执行策略两个平台的具体排查方式不同但本质上都是系统层面的安全限制。5.7 排查清单速查表□ 1. 确认报错信息中是否明确提到 PSSecurityException/执行策略相关字样 □ 2. 用 Get-ExecutionPolicy -List 查看当前各个作用域的策略设置 □ 3. 评估是否可以调整为 RemoteSigned个人开发机推荐做法 □ 4. 不想永久修改时使用会话级临时绕过方式 □ 5. 企业受限电脑优先尝试直接调用 .cmd 文件绕开限制 □ 6. 确认是否有组策略统一锁定了执行策略需要联系 IT 部门 □ 7. 团队 Onboarding 文档中明确写出该步骤避免重复排查6. 总结因为在此系统上禁止运行脚本报错的本质是Windows PowerShell 默认的脚本执行策略拦截了 npm 生成的.ps1包装脚本这是系统级安全机制在正常工作而不是 OpenClaw 的安装或代码存在问题。核心处理思路对个人开发机调整执行策略为RemoteSigned是最推荐的一次性解决方案企业受限电脑不方便修改策略时直接调用.cmd版本或改用 CMD能绕开这个限制如果策略被组策略统一锁定应该联系 IT 部门评估合规的放宽方式而不是尝试各种非常规手段强行绕过。最佳实践建议把 PowerShell 执行策略的调整作为团队 Windows 开发环境标准初始化脚本的一部分一次性配置好避免每个新成员、每台新电脑都要重新踩一次这个和具体工具无关的通用性 Windows 安全策略坑。