0

PowerShellで以下のようにコマンドを実行できると思いました。

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

ただし、 $outputには何も含まれていません。ssh または telnet 接続を確認しようとしています。

上記のコマンドから出力を取得する方法を教えてください。

4

3 に答える 3

5

それは不可能。MS telnet は stdin/out を使用しません。こちらを参照してください:リダイレクトされた標準ストリームを使用する C# + telnet プロセスはすぐに終了します

telnet セッションの出力をリダイレクトするには、引数を使用して、使用-f logfileが終わった後にそれを変数にインポートします。$output = get-contents logfile

キーコマンドを telnet に送信するには、次のコマンドを使用できます$wshell = new-object -com wscript.shell

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

はい、私は知っています...あなたが期待するものではありませんが、それがMSの組み込みtelnetコンソールを使用する唯一の方法です。何か良い方法をご存知でしたら、教えていただけると幸いです。

開いているポートのみを確認したい場合は、telnet の代わりにクエリを実行してみませんか? ここを参照してください。

于 2013-06-01T13:38:33.763 に答える
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
于 2015-09-22T02:16:13.323 に答える