【问题标题】:Cant do cd via Posh-SSH on a Linux remote无法在 Linux 遥控器上通过 Posh-SSH 执行 cd
【发布时间】: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


【解决方案1】:

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

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

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

希望这些信息对未来的人有所帮助!

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多