-1

我一直在用 Powershell 和 Posh-SSH 模块编写一些脚本。我主要连接到思科设备,但也有一些其他网络设备。我的问题似乎是我可以很好地连接到设备,但我的命令似乎没有运行。我尝试过 Invoke-SSHCommand 以及创建 New-SSHShellStream。奇怪的是,如果我打开 Powershell 并手动执行每个命令,它似乎工作得很好,但由于某种原因,在脚本中运行不会产生我正在寻找的结果。

我发现 plink.exe 工作得很好,但如果可能的话,我真的宁愿从 Powershell 编写所有这些代码。这些网络设备可能与 Linux 服务器不同吗?

代码:
New-SSHSession -ComputerName $fw-ip -Credential (Get-Credential) -Verbose<br/> $session = Get-SSHSession -Index 0<br/> $stream = $session.Session.CreateShellStream("dumb", 0, 0, 0, 0, 1000)<br/> $stream.Write("show ver")<br/> $stream.Read()


我得到什么:
Type help or '?' for a list of available commands.<br/> FW/Admin>

4

1 回答 1

0

因此,在与您一起在评论中工作后,似乎有两个问题,第一个是 SSH.NET 库支持的 SSH shell 似乎不支持部分命令,将“显示版本”交换为“显示版本”更正了. 此外,该命令的运行时间比脚本在流上调用其 read() 之前等待的时间要长一些,这可以通过start-sleep -seconds 5在 write() 和 read() 之间添加一个来解决。如果您打算将其用于可能需要更长时间或不确定它们需要多长时间的命令,您可能需要研究一些额外的处理,通过检查数据可用属性或创建一个来检查命令是否完成DataReceived 事件的侦听器,但如果您保持简单,基本计时器将非常适合您。

于 2016-10-26T21:35:42.030 回答