我想我可以在PowerShell上運行下面的命令。如何在PowerShell上獲取telnet輸出?
$output = & echo quit | telnet localhost 22
echo $output
然而, $輸出有什麼也沒有。 我試圖驗證SSH或Telnet連接。
請問您能告訴我如何從上述命令中獲得輸出嗎?
我想我可以在PowerShell上運行下面的命令。如何在PowerShell上獲取telnet輸出?
$output = & echo quit | telnet localhost 22
echo $output
然而, $輸出有什麼也沒有。 我試圖驗證SSH或Telnet連接。
請問您能告訴我如何從上述命令中獲得輸出嗎?
這是不可能的。 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。
嘗試調整它以從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