Sublime Text 不能原生运行 .ps1 脚本,需通过构建系统调用 powershell.exe 或 pwsh.exe;配置时须匹配实际安装的 PowerShell 版本,并设置 -ExecutionPolicy Bypass 或 RemoteSigned 以绕过执行策略限制,同时需手动关联 PowerShell 语法高亮。

Sublime Text 能不能直接运行 .ps1 脚本?
不能原生运行,Sublime Text 本身不执行 PowerShell,它只是调用系统已安装的 powershell.exe 或 powershell_core(即 pwsh)。能否成功运行,取决于你的 Windows 系统是否启用 PowerShell 执行策略、路径是否正确、以及 Sublime 的构建系统配置是否匹配你实际安装的 PowerShell 版本。
怎么配置 PowerShell 构建系统(PowerShell.sublime-build)
你需要手动创建一个构建系统文件,告诉 Sublime:「保存为 .ps1 后,用哪个命令去跑它」。常见错误是直接复制网上过时配置,结果调用的是 PowerShell.exe 但你机器上只装了 pwsh(如 PowerShell 7+),或路径里带空格没加引号,导致构建失败。
- 打开 Sublime Text → Tools → Build System → New Build System…
- 清空默认内容,粘贴以下任一配置(根据你实际安装的 PowerShell 类型选):
如果你用的是 Windows 自带的 PowerShell 5.1(通常位于 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe):
{
"cmd": ["powershell.exe", "-ExecutionPolicy", "Bypass", "-NoProfile", "-File", "$file"],
"selector": "source.powershell",
"working_dir": "$file_path",
"shell": true
}
如果你用的是 PowerShell Core / PowerShell 7+(需单独下载安装,路径类似 C:\Program Files\PowerShell\pwsh.exe):
{
"cmd": ["pwsh.exe", "-ExecutionPolicy", "Bypass", "-NoProfile", "-File", "$file"],
"selector": "source.powershell",
"working_dir": "$file_path",
"shell": true
}
- 保存为
PowerShell.sublime-build(Sublime 会自动存到Packages/User/目录) - 重启 Sublime 或刷新构建系统列表(Tools → Build System),选择刚建好的
PowerShell
为什么按 Ctrl+B 还是报错:「无法加载文件,因为在此系统中禁止运行脚本」?
这是 PowerShell 默认执行策略(ExecutionPolicy)拦截的,不是 Sublime 的问题。即使你在终端里手动运行 .ps1 也会遇到。关键在于:Sublime 构建系统里的 -ExecutionPolicy Bypass 参数只对当前命令生效,但某些环境(比如以管理员身份运行 Sublime、或组策略强制锁定)会让该参数被忽略。
- 临时验证:在 Windows 终端里运行
powershell.exe -ExecutionPolicy Bypass -File "C:\test.ps1",看是否能跑通 - 如果仍失败,说明系统级策略更强,需改用
-ExecutionPolicy RemoteSigned并确保脚本所在目录可信,或用管理员权限启动 PowerShell 修改本地策略:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 注意:
Bypass在企业域环境下常被禁用,RemoteSigned更稳妥
怎么让 Sublime 自动识别 .ps1 文件并高亮语法?
默认 Sublime 不知道 .ps1 是 PowerShell,需要手动关联语法高亮。否则即使构建系统配对了,也看不到变量/命令关键词着色,写错也不容易发现。
- 打开任意
.ps1文件 → View → Syntax → Open all with current extension as… → PowerShell - 或者更彻底:安装 Package Control 后搜索安装
PowerShell插件(作者:jnoortheen),它会自动注册.ps1、.psm1、.psd1关联,并提供基础补全 - 确认右下角状态栏显示
PowerShell,不是Plain Text或ShellScript
真正麻烦的从来不是配构建系统,而是执行策略和语法识别这两个点——前者决定脚本能跑不能跑,后者决定你能不能看清自己写了啥。










