2016-10-26 11 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"コマンドを認識する方法について奇妙なことがある可能性があります。代わりに「バージョン」を使用し、それがどのように進むのか教えてください。 –

答えて

0

だから、最初はさ、二つの問題があったように見えるコメントであなたと一緒に作業した後、そのSSHシェルSSH.NETライブラリでサポートされている部分的なコマンドをサポートしていないようですが、 "Show Ver"を "Show Version"にスワップして修正しました。さらに、コマンドはストリーム上でread()を呼び出す前にスクリプトが待機していた時間より少し長く実行されていましたが、write()とread()の間にstart-sleep -seconds 5を追加することで修正できます。このコマンドを使用する予定がある場合は、時間がかかるか、コマンドの実行時間を確認できない場合は、dataavailableプロパティをチェックしてコマンドが実行されたかどうかを確認する追加の処理を調べることができます。 DataReceivedイベントのリスナーですが、単純な基本的なタイマーがあれば、あなたのためにうまくいくでしょう。