VSCode 终端 PowerShell 报错“未经授权”通常是因为执行策略设置为 Restricted。最推荐的修复方式是将当前用户的执行策略改为 RemoteSigned,无需管理员权限且不影响系统安全。
先说结论:修改 PowerShell 执行策略 scope 为 CurrentUser 可解决大部分 VSCode 终端脚本拦截问题
- 先确认:报错信息包含“无法加载文件”或“未经授权”字样
- 先处理:在终端执行 set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 再验证:运行 get-ExecutionPolicy 确认策略已变更
命令速用版
在 VSCode 内置终端或 PowerShell 窗口中直接运行以下命令,无需管理员身份:
set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
系统提示确认时输入 Y 或 A 回车即可。
为什么会这样
Windows PowerShell 默认安全策略禁止运行未签名脚本。
为了防止恶意脚本自动执行,Windows 客户端版本的 PowerShell 默认执行策略通常设为 Restricted,只允许交互式命令,禁止运行脚本文件。VSCode 默认使用 PowerShell 作为终端,当运行 npm、python venv 激活脚本或其他构建脚本时,会被该策略拦截并抛出 UnauthorizedAccess 错误。
分步处理
按顺序执行以下操作可修复权限报错:
- 打开终端:在 VSCode 中按下 Ctrl + ` 打开集成终端,确保终端类型显示为 PowerShell。
- 执行策略命令:输入
set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser并回车。 - 确认变更:当屏幕提示“执行策略更改”时,输入
Y或A并回车确认。 - 重启终端:关闭 VSCode 终端面板并重新打开,或重启 VSCode 确保配置生效。
怎么验证是否生效
使用查询命令检查当前策略状态,确认 CurrentUser 层级已变更。
在终端运行:
get-ExecutionPolicy -List
查看输出结果中CurrentUser对应的值是否为RemoteSigned。如果显示 RemoteSigned,则 VSCode 终端脚本执行权限已开放。如果仍显示 Restricted,说明命令未生效或被组策略覆盖。
常见坑
- 管理员权限误区:使用
-Scope LocalMachine需要管理员身份运行 VSCode,普通开发场景建议仅使用CurrentUser。 - 组策略覆盖:部分公司电脑通过组策略强制锁定执行策略,用户级修改可能无效,需联系 IT 部门。
- 终端未刷新:修改策略后旧终端会话可能仍保留旧配置,必须新建终端窗口验证。
- Cmd 不受影响:该策略仅针对 PowerShell,如果使用 Cmd 终端不会报此错,但功能特性不同。
常见问题
修改执行策略需要管理员权限吗?
使用 CurrentUser scope 不需要管理员权限。
仅当修改 LocalMachine 或 MachinePolicy scope 时才需要以管理员身份运行终端。
设置为 RemoteSigned 安全吗?
对开发环境而言是安全且标准的配置。
RemoteSigned 允许运行本地编写的脚本,仅要求从网络下载的脚本必须有签名,平衡了便利性与安全性。
为什么 Cmd 终端没有这个报错?
Cmd 没有执行策略机制,只有 PowerShell 有此安全限制。
如果无法修改 PowerShell 策略,可临时将 VSCode 默认终端配置文件切换为 Command Prompt。
参考来源
- Microsoft Learn - 关于执行策略:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.security/about/about_execution_policies
- Microsoft Learn - Set-ExecutionPolicy:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.security/set-executionpolicy