Skip to content

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临时执行单个命令

操作步骤与建议

最推荐的方法是方案二(为用户永久修改),它在安全性和便利性间取得了较好平衡。具体步骤如下:

  1. 打开PowerShell:无需管理员身份。
  2. 查看当前策略:输入 Get-ExecutionPolicy 并回车,通常会显示 Restricted(受限制的)。
  3. 修改策略:输入 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 并回车。
  4. 确认更改:系统会提示确认,输入 YA 并回车。
  5. 验证:再次输入 Get-ExecutionPolicy,确认显示为 RemoteSigned

完成后,你的 npm 命令就应该可以正常执行了。

:部分最新版Node.js(如v22.13.1)的 npm.ps1 文件可能因签名问题触发此错误。若修改策略后问题依旧,可考虑降级到LTS版本,或直接使用npm.cmd命令作为临时替代。

总结与扩展

简单来说,你可以通过 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 这个命令来一劳永逸地解决问题。这个设置允许你运行自己创建的脚本,同时仍对来自外部的脚本保持一定安全限制。