Windows被禁止运行脚本

出现了

1
2
3
4
5
6
7
pnpm : 无法加载文件 D:\develop\nodejs\pnpm.ps1因为在此系统上禁止运行脚本有关详细信息请参阅 https:/go.microsoft.com/fwl
ink/?LinkID=135170 中的 about_Execution_Policies
所在位置 :1 字符: 1
+ pnpm run dev
+ ~~~~
    + CategoryInfo          : SecurityError: (:) []PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

这个错误信息 无法加载文件 D:\develop\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。 表明你的 PowerShell 执行策略阻止了 pnpm 脚本的运行。这是 Windows 系统为了安全而设置的默认策略。

要解决这个问题,你需要修改 PowerShell 的执行策略。推荐的策略是 RemoteSigned,它允许你本地创建的脚本运行,但会要求从网上下载的脚本必须经过数字签名。

解决方案步骤:

  1. 以管理员身份打开 PowerShell。

    • 在 Windows 搜索栏中输入 “PowerShell”。
    • 在搜索结果中找到 “Windows PowerShell”,然后右键点击它,选择 “以管理员身份运行”。
  2. 检查当前的执行策略(可选但推荐):

    • 在 PowerShell 窗口中输入以下命令并按 Enter:
      1
      
      Get-ExecutionPolicy
      
    • 这会显示当前的执行策略,很可能是 Restricted(受限)或 AllSigned
  3. 设置新的执行策略:

    • 在 PowerShell 窗口中输入以下命令并按 Enter:
      1
      
      Set-ExecutionPolicy RemoteSigned
      
    • 系统会提示你确认更改。输入 Y (表示 Yes) 并按 Enter。
  4. 验证策略是否已更改(可选但推荐):

    • 再次输入 Get-ExecutionPolicy 并按 Enter。
    • 确认显示的是 RemoteSigned
  5. 关闭管理员 PowerShell 窗口。

  6. 回到你的开发终端(Git Bash、CMD、VS Code Terminal 等),重新运行你的 pnpm 命令:

    1
    
    pnpm run dev
    

现在,pnpm 应该能够正常运行了。

解释和注意事项:

  • RemoteSigned 策略: 这是一个比较平衡的策略。它允许你在本地编写或通过安装器(如 Node.js 或 pnpm)生成的脚本运行,同时仍然对从互联网下载的脚本保持一定的安全性(要求签名)。
  • 其他策略:
    • Restricted (默认):不允许任何脚本运行。
    • Unrestricted:允许所有脚本运行,但会警告从互联网下载的脚本。安全性最低。
    • AllSigned:只允许由受信任的发布者签名的脚本运行。
  • 安全性考虑: 更改执行策略会降低系统的安全性,但对于开发者来说,为了运行开发工具,这是必要的。RemoteSigned 是一个常用且相对安全的折衷方案。
  • 如果只想针对当前用户生效: 你也可以使用 -Scope CurrentUser 参数,这样只会影响当前登录的用户,而不是整个系统:
    1
    
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    
    但通常情况下,为了方便,开发者会选择影响全局。
页面浏览量Loading
网站总访客数:Loading
网站总访问量:Loading
使用 Hugo 构建
主题 StackJimmy 设计
-->