-1

私は、コードの以下の部分を比較的凝縮した方法で実行しようとしています (はるかに大きなスクリプトにプラグインするため)。この方法で複数のコマンドを送信しても問題はありません。ただし、複数行のコマンドが最終的に詰まる原因となるものがあります。Cisco コマンドの構文は正しいようです。なんらかの文字制限に達しているのか、それとも で特定の文字をエスケープする必要があるのか​​ はわかり$showintstatusCommandsませんが、私が試したものは何もうまくいかないようです.

このコード:

$BGPInterface = "GigabitEthernet0/2"
$showintstatusCommands =  "`nterminal length 0`nsho int $BGPInterface | include reliability|errors`nsho log | include $Date.*LINK-3-UPDOWN.*$BGPInterface`nexit"
($Response = $showintstatusCommands | C:\Windows\plink.exe -ssh -2 -l $Credential.GetNetworkCredential().username -pw $($Credential.GetNetworkCredential().password) $DeviceName -batch) 2>$null | out-null

変数の内容を明らかにすると、以下が生成されます。$ShowIntstatusCommandsローカルにエコーされると正しいように見えます。3 行目の末尾が切り取られていることに注意してください (末尾の 2 番目の文字が欠落しています)。また、次の行は、 で始まる前の行の奇妙な残りです$nclude

PS C:\Users\MKANET\Desktop\test> $Response
CISCO-ROUTER#
CISCO-ROUTER#terminal length 0
CISCO-ROUTER#sho int GigabitEthernet0/2 | include reliability|errors

   reliability 255/255, txload 1/255, rxload 1/255

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 output errors, 0 collisions, 3 interface resets

CISCO-ROUTER#sho log | include Jul 17.*LINK-3-UPDOWN.*GigabitEthernet0/

$nclude Jul 17.*LINK-3-UPDOWN.*GigabitEthernet0/2

CISCO-ROUTER#
CISCO-ROUTER#exit
PS C:\Users\MKANET\Desktop\test> $showintstatusCommands
terminal length 0
sho int GigabitEthernet0/2 | include reliability|errors
sho log | include Jul 17.*LINK-3-UPDOWN.*GigabitEthernet0/2
exit
4

2 に答える 2

0

以下のコマンドを手動で入力した場合、すべてのリモート デバイスで同じ動作が発生していることを最終的に確認しました。あまりにも多くの文字が使用されている場合、行がごちゃごちゃになります。

私が変更され:

sho log | include $Date.*LINK-3-UPDOWN.*$BGPInterface

以下のコマンドに (ほんの数文字を削除して); そして、それはうまくいきました。Cisco IOS CLI の制限だったようです。

sho log | include $Date.*LINK-3-UPDO.*$BGPInterface

于 2015-07-23T01:19:13.333 に答える
0

非グローバル スコープ (スクリプトまたは関数スコープなど) の変数に書き込む場合、PowerShell は同じ名前のより高いレベルのスコープ変数を変更しません。IOW$Response = 'foo'は $Response 変数のローカル コピーを作成し、それに「foo」を割り当てます。あなたの意図がグローバル変数 $Response を変更することである場合は、行を$global:Response = ... What you see in $global:Responseis Residual, おそらく以前のいじくり回しからのものに変更します。

于 2015-07-18T04:42:07.167 に答える