powershell 设置允许运行脚本
Windows 为防止恶意脚本运行,默认会阻止执行任何脚本文件(包括 npm.ps1)。
解决方案一览
可以根据下表选择最适合的解决方法:
| 方法 | 操作命令 (在PowerShell中执行) | 影响范围 | 推荐场景 |
|---|---|---|---|
| 1. 临时修改 (仅本次会话) | Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass | 当前打开的PowerShell窗口 | 快速测试,不改变系统设置 |
| 2. 为用户永久修改 | Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned | 仅当前Windows用户 | 个人电脑最推荐 |
| 3. 为系统全局修改 | Set-ExecutionPolicy -ExecutionPolicy RemoteSigned (需管理员身份) | 本机所有用户 | 需要为所有用户开放权限 |
| 4. 使用替代方案 | 使用 npm.cmd -v 替代 npm -v | 无 | 临时执行单个命令 |
操作步骤与建议
最推荐的方法是方案二(为用户永久修改),它在安全性和便利性间取得了较好平衡。具体步骤如下:
- 打开PowerShell:无需管理员身份。
- 查看当前策略:输入
Get-ExecutionPolicy并回车,通常会显示Restricted(受限制的)。 - 修改策略:输入
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned并回车。 - 确认更改:系统会提示确认,输入
Y或A并回车。 - 验证:再次输入
Get-ExecutionPolicy,确认显示为RemoteSigned。
完成后,你的 npm 命令就应该可以正常执行了。
注:部分最新版Node.js(如v22.13.1)的
npm.ps1文件可能因签名问题触发此错误。若修改策略后问题依旧,可考虑降级到LTS版本,或直接使用npm.cmd命令作为临时替代。
总结与扩展
简单来说,你可以通过 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 这个命令来一劳永逸地解决问题。这个设置允许你运行自己创建的脚本,同时仍对来自外部的脚本保持一定安全限制。
