PowerShell 7.1.4中Get-Command终端正常但脚本内无法识别pandoc
问题根因
该问题和Get-Command、pandoc本身的可用性完全无关,是你编辑/复制脚本时不小心混入了无效特殊字符导致的语法错误:
从你贴出的调整后脚本可以看到try {这一行末尾多了不属于代码的特殊字符─╯,这是oh-my-posh渲染终端提示符的边界字符,你复制代码时把它一起粘贴到了脚本文件里。PowerShell执行脚本时会将这串特殊字符识别为待执行的命令,触发CommandNotFoundException进入catch块,而你最初的catch块只打印找不到pandoc的提示,才造成了「Get-Command识别不到pandoc」的误导。
解决方案
打开你的mkdocs.ps1脚本,定位到VerifyPandocExists函数内try {所在的行,删除行尾所有多余的空格以及特殊字符─╯,保证try {之后直接换行、无多余字符即可正常执行。
如果后续遇到类似无厘头的命令找不到错误,可以先排查脚本是否混入了复制粘贴带入的特殊字符,也可以用下方命令提前校验脚本语法是否合法:
$scriptPath = "你的脚本文件绝对路径" $parseErrors = $null [void][System.Management.Automation.Language.Parser]::ParseFile((Resolve-Path $scriptPath).Path, [ref]$null, [ref]$parseErrors) $parseErrors
执行后如果有输出,就可以直接定位到脚本内语法错误的具体位置和原因。
内容的提问来源于stack exchange,提问作者jaime
相关产品推荐
相关产品推荐

