SSH远程执行PowerShell脚本时路径报错但仍执行的异常问题
以下是几种可能导致该异常的原因:
Unix Shell与Windows CMD的命令解析差异
Windows OpenSSH服务器默认会将远程接收的命令交给CMD.exe执行,而非直接调用PowerShell。当你在Unix端用双引号包裹命令时,CMD在解析cd C:\Users\Public\docker_service\LayoutMlgit时,若路径中存在大小写混合的字符,CMD的路径处理逻辑可能出现异常映射,导致后续PowerShell读取到错误的路径上下文。不过由于你指定了脚本的执行(脚本实际存在于目标路径),PowerShell最终仍能找到脚本并执行,而报错可能来自CMD切换目录时的异常反馈。路径字符的意外转义或解析错误
在Unix Shell的双引号中,虽然大部分反斜杠不会被转义,但如果你的命令中存在不可见的特殊字符(如输入时误触的控制字符),可能导致Windows端解析路径时出现拆分错误,将LayoutMlgit错误拆分为LayoutML\layoutLMgit这类层级路径。PowerShell脚本内部的隐性路径引用
即便你确认未手动设置过报错路径,脚本内部可能存在相对路径引用、环境变量拼接或动态生成路径的逻辑。比如脚本中使用了类似$PWD\layoutLMgit的相对路径,而$PWD在CMD切换目录异常时被错误赋值,导致出现不存在的路径报错。但由于脚本核心逻辑不依赖该错误路径,所以整体仍能正常执行。Windows OpenSSH服务器的路径解析bug
部分版本的Windows OpenSSH服务器在处理大小写混合的路径时,可能存在错误映射问题,将单级目录名错误解析为多级目录结构。这种情况下,服务器会错误生成不存在的路径并抛出错误,但实际执行脚本时仍会使用正确的初始路径。
内容的提问来源于stack exchange,提问作者Mr Bonjour

