2013-06-01 38 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 
相关问题