我正在尝试创建一个简单的PowerShell函数来使用Linux风格的ssh命令。如:
ssh username@url
我正在使用plink来做这个,这是我写的函数:
function ssh {
param($usernameAndServer)
$myArray = $usernameAndServer.Split("@")
$myArray[0] | C:\plink.exe -ssh $myArray[1]
}
如果用户输入正确,$ myArray [0]是用户名,$ myArray [1]是URL。因此,它连接到URL,当系统提示您输入用户名时,使用管道流式传输用户名。一切都很完美,除了管道一直在提供用户名($ myArray [0]),它一直作为密码输入。例如:
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"
如果用户名已被xxxxx替换,并且该网址已被yyyyy取代。
基本上,我需要找到如何在输入一次后停止脚本在用户名($ myArray [0])中的管道。
有什么想法吗?我已经在互联网上寻找解决方案并且没有找到任何东西。
答案 0 :(得分:2)
是不是plink允许您在一个参数中一起指定用户和主机?那就是:
plink -ssh user @ host
如果是这样,你的ssh功能可以缩小为:
function ssh {
param($usernameAndServer)
C:\plink.exe -ssh $usernameAndServer
}