私は、コードの以下の部分を比較的凝縮した方法で実行しようとしています (はるかに大きなスクリプトにプラグインするため)。この方法で複数のコマンドを送信しても問題はありません。ただし、複数行のコマンドが最終的に詰まる原因となるものがあります。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