我正在尝试创建一个简单的 PowerShell 函数来使用 Linux 风格的 ssh 命令。如:
ssh 用户名@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,URL 已替换为 yyyyy。
基本上,我需要找出如何阻止脚本在用户名 ($myArray[0]) 输入一次后通过管道传输。
有什么想法吗?我在互联网上到处寻找解决方案,但一无所获。
最佳答案
plink 是否允许您在一个参数中同时指定用户和主机?即:
plink -ssh 用户@主机
如果是这样,您的 ssh 功能可以缩减为:
function ssh {
param($usernameAndServer)
C:\plink.exe -ssh $usernameAndServer
}
关于windows - Powershell 中的流水线字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665170/