Chaîne en pipeline dans Powershell

J’essaie de faire une simple fonction PowerShell pour avoir une commande ssh de style Linux. Tel que:

ssh username@url

J’utilise le plink pour faire cela, et c’est la fonction que j’ai écrite:

 function ssh { param($usernameAndServer) $myArray = $usernameAndServer.Split("@") $myArray[0] | C:\plink.exe -ssh $myArray[1] } 

S’il est correctement saisi par l’utilisateur, $ myArray [0] est le nom d’utilisateur et $ myArray [1] est l’URL. Ainsi, il se connecte à l’URL et lorsque vous êtes invité à entrer un nom d’utilisateur, le nom d’utilisateur est diffusé en continu via le pipeline. Tout fonctionne parfaitement, sauf que le pipeline continue à alimenter le nom d’utilisateur ($ myArray [0]) et qu’il est entré en tant que mot de passe encore et encore. Exemple:

 PS C:\Users\Mike> ssh xxxxx@yyyyy login as: xxxxx@yyyyy's password: Access denied xxxxx@yyyyy's password: Access denied xxxxx@yyyyy's password: Access denied xxxxx@yyyyy's password: Access denied xxxxx@yyyy's password: Access denied xxxxx@yyyyy's password: FATAL ERROR: Server sent disconnect message type 2 (protocol error): "Too many authentication failures for xxxxx" 

Où le nom d’utilisateur a été remplacé par xxxxx et l’URL a été remplacé par aaaa.

Fondamentalement, j’ai besoin de savoir comment arrêter le script de passer en revue le nom d’utilisateur ($ myArray [0]) après avoir été entré une fois.

Des idées? J’ai cherché sur Internet pour trouver une solution et je n’ai rien trouvé.

ne plink ne vous permet pas de spécifier l’utilisateur et l’hôte ensemble dans un seul argument? C’est:

plink -ssh user @ host

Si oui, votre fonction ssh pourrait être réduite à:

 function ssh { param($usernameAndServer) C:\plink.exe -ssh $usernameAndServer }