powershell 默认执行策略为restricted导致npm等.ps1脚本被拒,解决方法是执行set-executionpolicy remotesigned -scope currentuser -force并重启终端,或切换至command prompt/git bash终端。

VSCode 里 npm、yarn、pnpm 或自定义 .ps1 脚本报 “无法加载文件,因为在此系统上禁止运行脚本”,不是 Node 没装好,也不是项目写错了——是 PowerShell 默认策略在拦你。
为什么 PowerShell 会拒绝执行 npm.ps1?
Windows 安装的 Node.js 会在 C:\Program Files\nodejs\ 下生成 npm.ps1(还有 yarn.ps1、pnpm.ps1),这是 npm CLI 在 PowerShell 中的封装脚本。但 PowerShell 默认策略是 Restricted,连本地写的 .ps1 都不放行。这不是权限问题,和文件属性、UAC、管理员身份完全无关。
验证方式:在 VSCode 终端里运行 Get-ExecutionPolicy,返回 Restricted 就坐实了。
-
Restricted:啥脚本都不让跑(默认值) -
RemoteSigned:本地脚本直行,远程脚本需数字签名(推荐) -
Bypass:彻底关防护,仅适合单次调试,不建议长期用
改 CurrentUser 级策略是最稳妥的永久解法
别用管理员权限去改 LocalMachine,那会影响整个系统,还可能被组策略覆盖。只对当前用户生效,安全又干净。
在 VSCode 终端里执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
然后必须关闭当前终端标签页(点垃圾桶图标),再按 Ctrl+Shift+` 新开一个——旧终端不会刷新策略。
验证是否生效:
Get-ExecutionPolicy -Scope CurrentUser
应输出 RemoteSigned。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 加
-Force可跳过确认提示,适合批量配置 - 改完后
npm run dev、yarn build全部恢复可用 - 如果误用了
-Scope LocalMachine,得用管理员 PowerShell 运行Set-ExecutionPolicy Undefined -Scope LocalMachine才能撤回
不想动策略?换终端更直接
PowerShell 策略只影响 PowerShell,不影响 Command Prompt 和 Git Bash。它们调用的是 npm.cmd 或 shell 封装,天然绕过 .ps1 校验。
操作路径:
Ctrl+Shift+P → 输入 Terminal: Select Default Profile → 回车 → 选 Command Prompt 或 Git Bash
- 选
Command Prompt后,npm走的是npm.cmd,零配置即用 - 选
Git Bash后,支持./deploy.sh、chmod +x,行为接近 Linux - 如果 Git Bash 不在列表里,需手动在
settings.json里加terminal.integrated.profiles.windows配置,指向bash.exe路径 - 改完必须关掉所有终端标签页再新建,否则仍沿用旧 Shell
PowerShell 里调用含空格或中文路径的脚本要加 & 和引号
即使策略已放开,PowerShell 对路径依然敏感。写 my script.ps1 会被拆成两个参数,直接报错 “The term 'my' is not recognized”。
正确调用格式必须同时满足:
- 前面加
&(调用操作符) - 路径用双引号包裹
例如:
&"D:\我的项目\deploy.ps1"
&".\start dev.ps1"
漏掉 & 或引号,哪怕策略是 RemoteSigned,照样失败。
真正容易被忽略的不是怎么改策略,而是改完没关终端就以为生效了,或者路径里有空格却忘了加 & 和引号——这两处卡住的人最多。










