【发布时间】:2018-06-08 13:58:45
【问题描述】:
我制作了一个使用 Posh-SSH 连接到 linux pc 的 PowerShell 脚本。该脚本运行良好,但我发现由于某种原因我无法通过目录进行 cd。
这就是我将命令传递给 Posh-SSH 会话的方式:
$input = Read-Host "AutoSSH>"
$result = Invoke-SSHCommand -SessionId 0 -Command $input
$result.Output
脚本是为了使 SessionId 0 是当时唯一可能的活动,并且 $result 只是以比 Posh-SHH 更好的方式打印输出。我已经尝试了 ls、服务命令(如 apache2 启动/状态)等,并获得了预期的结果。
但是当我尝试 cd 时它不起作用。这就是我尝试的方式以及我在测试中得到的结果:
Invoke-SSHCommand -SessionId 0 -Command "ls"
Host : 192.168.xx.xxx
Output : {asd.txt, Desktop, Documents, Downloads...}
ExitStatus : 0
Invoke-SSHCommand -SessionId 0 -Command "cd Desktop"
Host : 192.168.xx.xxx
Output : {}
ExitStatus : 0
Invoke-SSHCommand -SessionId 0 -Command "ls"
Host : 192.168.xx.xxx
Output : {asd.txt, Desktop, Documents, Downloads...}
ExitStatus : 0
我已经阅读了很多论坛、Posh-SSH 问题或文档,但对此问题没有答案。
为什么会这样?谢谢
【问题讨论】:
-
如果你使用 cd 而不是 ls 会发生什么? (computerhope.com/issues/ch000795.htm)
-
传递“cd”命令给了我在帖子中显示的相同结果。输出:{} ExitStatus:0。在所有测试中,我也做了一个 pwd,但所有结果都是 /root(不移动到任何地方)
-
如果你使用
ls Desktop会发生什么?那么cd Desktop;ls呢? -
ls Desktop 提供以下输出: 输出:{mount-shared-folders.sh, restart-vm-tools.sh} ExitStatus : 0 cd Desktop;ls: Output : {mount-shared-folders .sh, restart-vm-tools.sh} ExitStatus : 0 这个结果很有趣......也许 Posh-SSH 在命令执行后重置为 /root?
-
我可以从我所做的测试中确认,我可以浏览目录并完美地执行操作,但是当 Invoke-SSHCommand 结束时,路径会返回到 /root。这就是为什么我总是得到相同的 ls 结果。
标签: powershell ssh posh-ssh