0

我制作了一个使用 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 问题或文档,但对此问题没有任何答案。

为什么会这样?谢谢

4

1 回答 1

0

感谢帖子中的评论和一些测试,我发现了这一点:

当我运行命令时,cd 实际上正在完成它的工作,这就是命令“cd Desktop; ls”从桌面显示正确信息的原因。

我发现命令总是在 /root 中运行。因此,“ls”每次都会显示 /root 文件,即使我在不​​同的调用中预先运行了 cd 命令。

希望此信息对将来的某人有所帮助!

于 2018-06-09T01:48:12.870 回答