从macOS远程WinServer2012 R2追加文件内容的PowerShell+SSH问题
问题原因及解决方案
问题出在Bash脚本中的引号转义逻辑错误,导致最终传递给远程PowerShell的命令格式被破坏。你的脚本里,command变量的多层引号经过Bash解析后,传到Windows服务器时,PowerShell无法正确识别命令结构;而手动复制时,命令直接在PowerShell环境中解析,没有经过Bash的二次转义,所以能正常运行。
修正后的脚本写法
直接简化引号嵌套,避免多层转义的混乱:
ssh -t user@server "powershell -Command \"Get-Content -Path '$readfile' | Add-Content -Path '$keyfile'\""
原理说明
- 外层双引号让Bash解析其中的
$readfile和$keyfile变量,替换为实际路径。 - 内层用转义双引号
\"包裹PowerShell命令,确保远程PowerShell能完整接收整条管道命令。 - 路径用单引号
'包裹,避免路径中包含空格或特殊字符时出现解析错误。
内容的提问来源于stack exchange,提问作者Sergey Kuritsyn
相关产品推荐
相关产品推荐

