2013-06-01 35 views
0

我想我可以在PowerShell上運行下面的命令。如何在PowerShell上獲取telnet輸出?

$output = & echo quit | telnet localhost 22 
echo $output 

然而, $輸出有什麼也沒有。 我試圖驗證SSH或Telnet連接。

請問您能告訴我如何從上述命令中獲得輸出嗎?

回答

5

這是不可能的。 MS telnet不使用stdin/out。在這裏看到:C# + telnet process w/ redirected standard streams quits immediately

對於重定向的telnet會話的輸出,你可以使用-f logfile參數,然後將它導入到一個變量,你用它做後:$output = get-contents logfile

要發送keycommands遠程登錄,您可以使用$wshell = new-object -com wscript.shell然後:

start-process telnet -argumentlist "-f w:\tmp\log.txt"; 
sleep 1; 
$wshell.SendKeys("quit{ENTER}") 

是的,我知道......不是你所期望的,但據我所知是與MS內置的遠程登錄控制檯的唯一途徑。如果你知道更好的方法,我會很高興聽到它。

如果您只想檢查打開的端口,那麼爲什麼不只是查詢它們而不是telnetting?見here

0

嘗試調整它以從APC PDU收集Telnet輸出(讀取當前負載)。成功輸入指定的密鑰,並在telnet會話窗口中生成輸出,但一旦telnet會話結束,該窗口不會關閉。它保持打開狀態,「與主機丟失的連接」。

我可以按任意鍵關閉窗口,但PS腳本執行不會繼續,所以不執行SendKeys語句後面的代碼。

我是否缺少一些簡單的東西?下面的代碼。

$wshell = new-object -com wscript.shell 
start-process telnet -argumentlist "pdu1-a6.domain.local -f c:\temptelnet.log" 
sleep 1 
$wshell.SendKeys("username{ENTER}password{ENTER}current{ENTER}quit{ENTER}") 
$telnetoutput = get-content c:\temptelnet.log 
$telnetoutput 
相關問題