2016-10-26 63 views
-1

我一直在做一些使用Powershell和Posh-SSH模塊的腳本。我主要連接到思科設備,但也有一些其他網絡設備。我的問題似乎是,我可以連接到設備,但我的命令似乎沒有運行。我嘗試了Invoke-SSHCommand以及創建New-SSHShellStream。奇怪的是,如果我打開Powershell並手動逐步執行每個命令,它似乎工作得很好,但由於某種原因,在腳本中運行不會產生我正在尋找的結果。Posh-SSH和Cisco Gear

我發現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

對不起,試圖回答你的問題,但我無法弄清代碼在這裏發佈的格式。給我一分鐘。 –

+0

好吧,看起來命令正在發送,但設備沒有識別它,可能會有一些奇怪的事情會議認識到不完整的「show ver」命令的方式,你可以嘗試運行完整的「show版本「,而讓我知道它是怎麼回事? –

回答

0

所以它看起來像有兩個問題的意見與您合作,第一次是在此之後,SSH殼由SSH.NET庫支持似乎不支持部分命令,交換「顯示版本」到「顯示版本」糾正。另外,該命令花費的時間比腳本在等待流的read()之前等待的時間要長,這可以通過在write()和read()之間添加start-sleep -seconds 5來解決。如果您打算將這個命令用於可能需要更長時間的命令,或者您不確定它們需要多長時間,您可能需要查看一些額外的處理,這些處理通過檢查dataavailable屬性來檢查命令是否完成,或者創建一個監聽DataReceived事件,但如果您保持簡單的基本計時器將很適合您。