Sublime Text编写的PowerShell脚本运行失败问题求助
这种情况我之前也碰到过好几次,大概率是文件编码或隐藏不可见字符搞的鬼——毕竟Sublime Text和PowerShell控制台对这些细节的处理逻辑不太一致,才会出现“脚本直接运行报错,复制到控制台却正常”的奇怪现象。下面是几个最有效的排查和解决方法:
检查并修改文件编码
PowerShell对带BOM的UTF-8编码支持更稳定,而Sublime Text默认保存的是无BOM的UTF-8文件,这可能导致解析时出现语法误判。操作步骤:- 打开你的脚本文件,查看Sublime Text右下角的编码标识(比如显示
UTF-8) - 点击编码标识,选择
Save with Encoding > UTF-8 with BOM - 重新保存文件后,再从PowerShell调用脚本测试
- 打开你的脚本文件,查看Sublime Text右下角的编码标识(比如显示
排查隐藏的不可见字符
有时候复制粘贴、或者某些Sublime插件会插入零宽空格、全角符号这类肉眼不可见的字符,导致PowerShell无法正确识别语法结构。你可以:- 在Sublime Text中打开
View > Show Invisible Characters,开启不可见字符显示 - 定位到报错的行(比如你提到的第7行
function Get-SQLInstall {),检查括号前后是否有异常的灰色小符号 - 如果发现异常字符,直接删除并手动重新输入括号和相关代码
- 在Sublime Text中打开
调整行尾格式
Windows系统下PowerShell默认使用CRLF(回车+换行)作为行尾标识,如果Sublime Text设置成了LF(仅换行),也可能引发解析错误。操作:
打开View > Line Endings > Windows,将行尾格式切换为CRLF后保存文件排除插件干扰
某些代码格式化、自动补全类的Sublime插件,可能在保存时意外修改了代码结构(比如错误地删除了闭合括号)。你可以临时禁用所有插件(通过Preferences > Package Control > Disable Package),保存脚本后再测试是否还报错,以此排查插件问题。
如果以上方法都试过还是不行,可以尝试新建一个空白的Sublime文件,手动输入几行测试代码(比如简单的function定义),保存后运行,看看是否还会出现类似错误——这样能快速定位是不是原文件本身存在特殊问题。
内容的提问来源于stack exchange,提问作者Owain Esau

