sublime text 通过自定义 build system 调用 powershell.exe 或 pwsh.exe 运行 .ps1 脚本,核心是添加 -executionpolicy bypass 绕过策略限制、设置 "shell": true 展开 $file、确保语法高亮为 source.powershell 并将构建文件存于 packages/user/ 目录。

Sublime Text 本身不执行 PowerShell 脚本,它只是调用 powershell.exe 或 pwsh.exe 去跑;配置失败的根因几乎全是执行策略没绕过、$file 没展开、语法没绑定这三件事没对齐。
为什么 Ctrl+B 报“无法加载文件,因为在此系统中禁止运行脚本”
这是 Windows PowerShell 的 ExecutionPolicy 在拦截,和 Sublime 无关。默认是 Restricted,本地 .ps1 文件直接被拒。
-
-ExecutionPolicy Bypass必须写在"cmd"数组里,不能省,也不能换成RemoteSigned(后者在域环境或某些安全策略下仍会失败) - 别在 PowerShell 里全局改策略:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser容易被组策略覆盖,且不解决 Sublime 构建问题 - 如果你装的是 PowerShell 7+(即
pwsh.exe),就别硬写powershell.exe,否则报The system cannot find the file specified
PowerShell.sublime-build 文件必须放对位置、写对字段
构建系统不是“保存了就能用”,它依赖路径、JSON 结构、作用域匹配三个硬性条件。
- 文件必须保存在
Packages/User/目录下(可通过Preferences → Browse Packages…打开),不能放在桌面或任意子文件夹 - 文件名必须是
PowerShell.sublime-build,大小写敏感,后缀不能错 -
"shell": true是必需项,否则$file不会展开为绝对路径——尤其在中文或空格路径下,比如C:\My Scripts\test.ps1会被截断成C:\My -
"selector": "source.powershell"表示:只有当前文件语法设为 PowerShell 时,这个构建系统才生效;右下角显示 “Plain Text” 或 “ShellScript” 都不触发
如何让 .ps1 文件自动高亮并绑定构建系统
Sublime 不会根据 .ps1 后缀自动识别语法,也不会自动选构建系统——这两步都得手动做,缺一不可。
- 先装插件:
Ctrl+Shift+P→Package Control: Install Package→ 搜PowerShell(作者jbrooksuk),装完重启 - 打开一个
.ps1文件,点右下角语言名 → 选PowerShell;如果仍不生效,右下角点击 →Open all with current extension as…→PowerShell - 检查插件是否启用:
Preferences → Package Settings → PowerShell → Settings,确认"extensions"列表里包含"ps1" - 确保文件编码是 UTF-8 无 BOM;否则中文输出可能乱码,或
Get-Content读取失败
Build 执行后窗口一闪就关,看不到输出结果
PowerShell 脚本执行完立即退出,和 CMD 下 pause 类似,但 PowerShell 没有等价内置行为。
- 调试时临时加一行:
Read-Host "Press Enter to continue...",或结尾加cmd /c pause - 别用
Write-Host代替Write-Output——前者输出到控制台流,后者进管道,影响后续命令链 - 如果脚本含交互(如
Read-Host),Sublime 输出面板不支持输入,必须靠外部终端;这时建议用shell_cmd方式调起powershell.exe -NoExit -File "$file"
最常被忽略的是 "shell": true 和 "selector": "source.powershell" 这两个字段——它们不报错,但一旦缺失,Ctrl+B 就完全静默失效,连错误提示都不会出现。











