PowerShell执行策略是VSCode终端脚本被阻的主因,应优先用Set-ExecutionPolicy RemoteSigned -Scope CurrentUser;默认终端需检查terminal.integrated.defaultProfile.windows配置;路径含空格或中文时须用&加引号调用。

PowerShell 执行策略被阻止,ExecutionPolicy 是罪魁祸首
VSCode 默认终端在 Windows 上常是 PowerShell,而它默认启用严格执行策略,连本地写的 .ps1 脚本都不让跑——这不是权限问题,也不是杀毒软件拦截,纯粹是 PowerShell 自身的安全机制在起作用。
常见错误现象:File xxx.ps1 cannot be loaded because running scripts is disabled on this system. 或直接卡住无输出。注意:这个报错只出现在 PowerShell / PowerShell Core 终端里,CMD 或 Git Bash 不会触发。
- 别去改系统级策略(如用
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine),普通用户没权限,且影响全系统 - 优先用
-Scope CurrentUser,只改当前登录用户的策略,无需管理员权限 - 推荐设为
RemoteSigned:允许本地脚本,仅对从网络下载的脚本要求签名 - 如果只是临时跑一次,可跳过策略检查:
powershell -ExecutionPolicy Bypass -File .\xxx.ps1
VSCode 终端默认不是 PowerShell?查清 terminal.integrated.defaultProfile.windows
你以为切到 CMD 就安全了?不一定。VSCode 的终端行为取决于配置项,哪怕你手动启用了 CMD,下次打开可能又回 PowerShell——因为默认配置没改。
打开 VSCode 设置(Ctrl+,),搜索 terminal.integrated.defaultProfile.windows,确认它的值:
-
Windows PowerShell→ 触发ExecutionPolicy检查 -
Command Prompt或Git Bash→ 不走 PowerShell 策略,但可能缺 PowerShell 特有命令(如Get-ChildItem) - 想一劳永逸?把默认终端设成
Command Prompt,或装好Windows Terminal后配成默认
脚本带中文路径或空格,.\xxx.ps1 直接报错?得加引号和调用语法
即使执行策略放开了,PowerShell 对路径含空格或中文依然敏感——它不会自动帮你加引号,.\my script.ps1 会被拆成两个参数,直接报错。
正确写法必须显式引用并使用调用操作符 &:
& ".\my script.ps1" & "C:\项目\启动.ps1"
不加 & 时,PowerShell 把带空格的路径当命令名处理;不加引号时,中文或空格被截断。这两个细节漏一个,就卡在“找不到命令”。
用 pwsh(PowerShell Core)也一样受限?是的,策略独立但逻辑相同
如果你装了 PowerShell Core(即 pwsh.exe),它有自己的执行策略,和 Windows PowerShell 互不影响。也就是说,你给 powershell.exe 放了行,pwsh 仍可能报错。
检查当前终端用的是哪个:$PSVersionTable.PSVersion;设置对应策略:
-
powershell.exe→Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -
pwsh.exe→ 同样命令,但需在pwsh终端里运行才生效 - 两者策略文件位置不同,不能互相覆盖
跨版本混用时,最容易忽略这点:以为设了一次就全通,其实得分别处理。


















