我一直致力于使用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>
答案 0 :(得分:0)
因此,在评论中与您合作后,看起来有两个问题,第一个是SSH.NET库支持的SSH shell似乎不支持部分命令,交换&#34; Show Ver&#34 ;到&#34;显示版本&#34;纠正了。此外,在脚本调用其read()之前,命令运行时间比脚本等待的时间长一些,可以通过在write()和read()之间添加start-sleep -seconds 5
来修复。如果您计划将此命令用于可能需要更长时间的命令,或者您不确定它们需要多长时间,则可能需要查看一些额外的处理,通过检查dataavailable属性或创建命令来检查命令是否已完成。 DataReceived事件的监听器,但是如果你保持简单,那么基本计时器对你来说非常有用。