PowerShell下使用plink.exe直接执行远程命令无返回值问题求助
问题原因
你遇到的问题是Plink的参数顺序错误导致的:
Plink的标准语法规则为 plink [plink自有选项] 目标地址 [远程命令],所有Plink本身的配置参数(包括-pw、-no-antispoof等)必须放在远程命令参数之前。你之前的写法把-no-antispoof放在了远程命令"df -h"之后,Plink会将该参数识别为远程命令的一部分传递给远端服务器,最终远端实际执行的是df -h -no-antispoof,自然无法输出预期结果。
解决方法
1. 单条命令执行写法
调整参数顺序,将Plink自有参数全部放在远程命令之前即可:
plink.exe root@1.1.6.2 -pw $password -no-antispoof "df -h"
2. 多条命令执行写法
不需要创建临时文件,直接把多条命令用分号分隔,放在同一个引号包裹的命令参数里即可:
# 示例:同时执行df -h、free -m、uptime三条命令 plink.exe root@1.1.6.2 -pw $password -no-antispoof "df -h; free -m; uptime"
特殊场景注意事项
如果命令中包含特殊字符、引号或者需要传递PowerShell变量:
- 若不需要在本地解析变量,可改用单引号包裹远程命令,避免PowerShell提前解析特殊字符
- 若需要传递本地PowerShell变量到命令中,用双引号包裹命令,对命令内的双引号用
`进行转义即可
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

