PowerShell 运行 OpenClaw 安装脚本报错 running scripts is disabled on this system 的解决方案1. 问题描述按照 OpenClaw 官方文档在 Windows 上用 PowerShell 执行一键安装脚本时很多人会立刻被这条报错拦在第一步PS C:\Users\admin iwr -useb https://openclaw.ai/install.ps1 | iex install.ps1 : File C:\Users\admin\install.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID135170. CategoryInfo : SecurityError: (:) [], PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess有些人会看到稍微不同但本质相同的变体.\install.ps1 : 无法加载文件 C:\Users\admin\install.ps1因为在此系统上禁止运行脚本。 有关详细信息请参阅https:/go.microsoft.com/fwlink/?LinkID135170中的 about_Execution_Policies。这个问题在全新安装的 Windows 系统企业镀膜机、新买的电脑、公司统一配置的办公电脑、从未主动修改过 PowerShell 安全设置的个人电脑这几种场景下几乎是必然会遇到的第一道门槛。很多人第一反应是以为下载的脚本本身损坏了或者怀疑是网络问题导致文件没下全反复重新执行那条iwr命令依然无效——但实际上这个报错和脚本内容、网络状况完全无关它是Windows PowerShell 的一项内置安全机制专门用来防止用户不小心运行来源不明的脚本属于系统层面主动拦截而不是程序本身出了故障。2. 原因分析PowerShell 从设计之初就内置了一套叫做**执行策略Execution Policy**的安全机制用来控制在这台机器上允许以什么条件运行.ps1脚本文件。这个机制的存在是为了防止恶意脚本比如从邮件附件、网页下载的脚本在用户毫无察觉的情况下被静默执行。Windows 系统给不同类型的用户账户/安装场景设置了不同的默认执行策略最常见的默认值是Restricted完全禁止运行任何脚本文件只能执行单条命令。当你运行安装脚本时PowerShell 会先检查当前生效的执行策略如果策略判定不允许运行就直接拒绝加载这个脚本文件连脚本的第一行代码都不会执行。PowerShell 的执行策略分为几个常见等级从最严格到最宽松策略等级含义Restricted默认多数场景完全不允许运行任何.ps1脚本文件AllSigned只允许运行经过受信任发布者数字签名的脚本RemoteSigned本地编写的脚本可以直接运行从网络下载的脚本必须有数字签名Unrestricted允许运行所有脚本但从网络下载的脚本运行前会有一次确认提示Bypass完全不做任何检查、不提示风险最高而且这个策略是分层生效的——存在MachinePolicy组策略强制指定优先级最高普通用户无法覆盖、UserPolicy、Process仅当前这个 PowerShell 窗口生效、CurrentUser、LocalMachine五个作用域实际生效的是这几层里优先级最高且非Undefined的那一层。用一张流程图梳理判定逻辑执行 .ps1 脚本文件 ↓ PowerShell 依次检查五个作用域的执行策略按优先级从高到低 MachinePolicy → UserPolicy → Process → CurrentUser → LocalMachine ↓ 找到第一个非 Undefined 的策略值 ↓ 该策略是否允许运行这类脚本 ├─ 允许RemoteSigned及以上或本地脚本满足条件→ 正常执行 └─ 不允许Restricted→ 抛出 UnauthorizedAccess拒绝加载3. 解决方案方案一为当前用户放宽执行策略为 RemoteSigned最推荐最安全的日常方案在 PowerShell 里执行不需要管理员权限只影响当前用户账户Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser执行后会弹出一个确认提示输入Y并回车确认。这个设置的含义是你自己写的、或者从本地磁盘直接运行的脚本可以自由执行但从互联网下载下来的脚本必须带有可信任的数字签名才允许运行——这是官方长期推荐的一个既不完全裸奔、又不至于处处受限的平衡设置。设置完成后重新运行安装脚本iwr -useb https://openclaw.ai/install.ps1 | iex方案二仅对当前这一次会话临时放宽策略最保守用完即恢复默认如果你不想改动系统级或用户级的长期配置只是想装这一次 OpenClaw可以只对当前这一个 PowerShell 窗口临时放宽策略窗口一关闭设置自动失效不留任何后续影响Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force iwr -useb https://openclaw.ai/install.ps1 | iex-Scope Process决定了这个改动只在当前这一个进程窗口内生效关掉窗口重新打开一个新的策略又会恢复回之前的默认值是排查/临时使用时最干净的方式。方案三绕开执行策略检查用 Bypass 参数直接调用脚本文件如果你已经把安装脚本下载到本地了而不是用iwr | iex这种直接管道执行的方式可以在调用脚本的时候单独加一个-ExecutionPolicy Bypass参数只对这一次调用生效不改任何全局配置# 先把脚本下载到本地 Invoke-WebRequest -Uri https://openclaw.ai/install.ps1 -OutFile $env:TEMP\install.ps1 # 用 Bypass 参数单独调用这一个脚本文件不影响系统整体策略 powershell -ExecutionPolicy Bypass -File $env:TEMP\install.ps1这种方式的好处是先把脚本落地到本地你可以在执行前先打开看一眼脚本内容确认安全再决定是否运行比直接管道执行iwr | iex多了一层可审查性。⚠️风险提示无论用哪种方式绕开执行策略限制都建议先看一眼脚本内容再执行尤其是像iwr -useb url | iex这种下载后立即执行、不落地保存、你根本看不到内容的写法本质上是完全信任了这个 URL 背后的内容。只从你确认可信的官方域名如openclaw.ai下载脚本不要对来源不明的链接使用这种一键执行方式。方案四公司/企业电脑遇到组策略强制锁定无法自行修改时的处理如果执行Set-ExecutionPolicy后收到类似下面的报错Set-ExecutionPolicy : 无法在 Windows PowerShell 1 范围MachinePolicy中执行设置操作 或获取操作因为该范围当前由位于...的策略锁定。说明你所在的公司通过组策略Group Policy在MachinePolicy这一层强制锁定了执行策略优先级高于你能设置的任何用户级配置普通用户是无法绕过的。这种情况下正确的处理方式是联系公司 IT/运维部门说明你需要运行经过审查的开发工具安装脚本申请对应权限或申请在你的账户上开一个例外而不是尝试各种绕过的野路子——企业环境这样限制往往是出于合规和安全审计的要求。方案五改用非 PowerShell 脚本方式安装完全规避执行策略问题如果你确实不想触碰执行策略这个话题比如受限环境、或者单纯不想动系统安全设置可以选择官方文档提到的另一条路径——通过 WSL2 用 Linux 风格的 shell 脚本安装Linux 环境的bash脚本执行机制和 Windows PowerShell 的执行策略是完全独立的两套体系不会受这个问题影响# 先在 PowerShell管理员中安装 WSL2 wsl --install重启后进入 WSL2 环境用 Linux 平台的标准安装方式curl -fsSL https://openclaw.ai/install.sh | bash这种方式实质上是换了一套完全不同的执行环境从根源上避开了 Windows PowerShell 的这层安全限制对于经常需要执行各类开发工具安装脚本的开发者来说长期来看也更省心。4. 各方案对比总结方案适用场景推荐指数CurrentUser 设为 RemoteSigned个人电脑长期使用官方推荐的平衡方案⭐⭐⭐⭐⭐Process 范围临时 Bypass只想装这一次不想留下长期配置改动⭐⭐⭐⭐下载到本地后用 -ExecutionPolicy Bypass 调用想先审查脚本内容再执行安全意识更高⭐⭐⭐⭐联系IT申请例外公司电脑被组策略强制锁定⭐⭐⭐⭐改用 WSL2 安装完全规避 Windows 执行策略话题⭐⭐⭐5. 常见问题 FAQ5.1 修改执行策略会不会让我的电脑变得不安全不会带来显著风险只要按照方案一使用RemoteSigned而不是Unrestricted或Bypass这种最宽松等级。RemoteSigned的设计初衷就是本地脚本可以自由跑网络下载的脚本必须有签名这是微软官方长期推荐用于开发者日常使用的等级并不等同于彻底关闭安全防护。真正需要警惕的是把策略设成Bypass并作为长期默认配置那样才是把这层防护完全关闭了。5.2 为什么公司电脑和自己家里的电脑默认执行策略不一样Windows 系统默认的执行策略其实一直是Restricted但很多个人电脑用户之前可能已经因为其他原因比如装过其他开发工具改过这个设置所以感觉不到限制。企业电脑往往会通过组策略统一管理出于安全合规要求刻意保持严格设置且这个设置对普通用户账户不可覆盖这属于正常且合理的企业安全策略不是软件或系统故障。5.3 用irm | iex而不是iwr | iex会不会绕开这个限制不会。irmInvoke-RestMethod和iwrInvoke-WebRequest只是两种不同的网络请求方式iexInvoke-Expression才是真正负责执行脚本内容的那部分。执行策略检查的是是否允许执行脚本内容与你用什么方式把脚本内容下载下来完全无关换成irm组合同样会遇到一样的执行策略报错如果确实触发了脚本文件加载检查。5.4 Windows Server服务器版上安装时报的执行策略错误处理方式一样吗原理完全一致Windows Server 的默认执行策略同样是Restricted处理方式和普通 Windows 桌面版没有区别用方案一或方案二都能正常解决。唯一需要多留意的是服务器环境下更应该谨慎选择RemoteSigned而不是更宽松的等级毕竟服务器上跑的脚本一旦出问题影响范围可能更大安全意识要更谨慎一些。5.5 团队协作中如何避免每个新同事第一次装 OpenClaw 都被这个问题卡住建议在项目 README 的 Windows 安装章节里直接把方案一的那一行命令和一句简短解释放在安装步骤最前面作为Windows 用户请先执行这一步的强制性前置说明而不是等大家各自撞上报错后再各自去搜索解决方案。这样能把这个几乎人人都会遇到的第一道坎一次性提前拦截掉。5.6 CI/CD 流水线比如自建的 Windows Runner上跑安装脚本也会遇到这个问题吗会。CI 用的 Windows 虚拟机/容器同样有默认的执行策略限制需要在流水线脚本里显式指定绕过方式而不能假设CI 环境应该没有限制# 在 CI 脚本步骤里显式指定 powershell -ExecutionPolicy Bypass -Command iwr -useb https://openclaw.ai/install.ps1 | iex由于 CI 环境每次运行都是全新的虚拟机/容器实例用-ExecutionPolicy Bypass这种仅本次调用生效的方式反而更合适不需要也不应该去修改这类临时环境的持久化配置。5.7 排查清单速查表□ 1. 用 Get-ExecutionPolicy -List 查看当前所有作用域的策略值定位哪一层在拦截 □ 2. 判断这台电脑是个人电脑还是受组策略管控的企业电脑 □ 3. 个人电脑优先用 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser □ 4. 只想临时装这一次用 -Scope Process 方式关窗口自动恢复 □ 5. 企业电脑被 MachinePolicy 锁定联系 IT 部门申请例外不要强行绕过 □ 6. 对来源不明的一键安装脚本优先下载到本地审查内容后再执行 □ 7. 修改完成后重新执行原来的安装命令验证是否能正常继续 □ 8. 长期反复遇到类似问题考虑迁移到 WSL2 环境规避该系统层限制6. 总结cannot be loaded because running scripts is disabled on this system不是安装脚本坏了也不是网络问题而是Windows PowerShell 内置的执行策略安全机制在主动拦截。核心处理思路可以浓缩成三句话这是安全特性不是故障——理解它的设计初衷防止误运行恶意脚本能帮你更从容地判断该用哪种放宽方式而不是盲目地能跑就行RemoteSigned是日常使用的最佳平衡点——既不是完全裸奔的Bypass也不会处处受限是官方长期推荐的开发者常用等级企业电脑遇到组策略锁定要走正规流程——联系 IT 申请例外而不是想办法越狱绕过公司的安全合规设置。最佳实践建议养成对不熟悉来源的一键安装脚本先下载到本地看一眼内容再执行的习惯这既能规避这类执行策略报错带来的困惑也能顺手多一层安全审查一举两得。