J'essaie de faire la partie ci-dessous du code de manière relativement condensée (pour me connecter à un script beaucoup plus grand). Je n'ai aucun problème à envoyer plusieurs commandes de cette façon. Cependant, il y a quelque chose qui provoque l'étouffement de la commande multi-lignes. La syntaxe pour les comnmands Cisco semble être correcte. Je ne suis pas sûr si je cours dans une sorte de limite de caractères ou si j'ai besoin d'échapper à des caractères spécifiques dans $showintstatusCommands
, mais rien que j'ai essayé semble fonctionner.Envoi d'une commande complexe, multi-lignes via plink vers Cisco Router = Comportement inexpliqué
Ce code:
$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
produit le dessous quand je révèle le contenu des variables. $ShowIntstatusCommands
semble être correct lorsqu'il fait écho localement. Remarquez, la fin de la 3ème ligne est coupée (le numéro 2 est manquant à la fin). Aussi la ligne suivante est un résidu étrange de la ligne précédente, qui commence par $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
Quelle version de PowerShell êtes-vous? Cela aide-t-il si vous placez vos variables dans la chaîne que vous affectez à $ showintstatusCommands dans '{}' par exemple. '" ... $ {BGPInterface} ... $ {Date} ... $ {BGPInterface} .. "'? –
J'utilise Powershell 4.0; cependant, quoi que je fasse; Je voudrais qu'il fonctionne sous Powershell 2. Je n'ai pas essayé de support. Merci pour la suggestion! Je vais pouvoir tester ça lundi. BTW: J'ai déjà essayé d'utiliser $ ($ BGPInterface) sans succès. Je me demande s'il y a une limite de caractères. Le dernier caractère de la variable $ BGPInterface n'est pas visible; et, la sortie de ligne suivante devient mutilée. – MKANET
Hmm, si '$ ($ BGPInterface)' ne s'est pas corrigé alors '$ {BGPInterface}' ne le sera pas non plus. Il ne pense pas que ce soit un problème avec une limite de caractères. Je peux prendre cette chaîne entièrement développée avec la date et BGPInterface, la passer dans un petit test exe que j'ai écrit qui prend son stdin et le recrache sur la console. La chaîne entière vient à travers. –