windows - Powershell 中的流水线字符串

标签 windows scripting powershell ssh pipeline

我正在尝试创建一个简单的 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/

相关文章:

powershell - 我正在尝试编写将两个WMI命令结合在一起的PowerShell脚本

powershell - 乌类图 : 'Login-AzureRmAccount' is not recognized as the name of a cmdlet

node.js - 使用 npm 安装的数据包不会走向全局

python - 使用 cmd 模块实时更改用户输入

windows - 如何使用 certmgr 在 Excel 中将证书添加到受信任的发布者?

java - 执行脚本之前等待 AsyncTask 完成

c# - 检查是否在 .NET 中连接了第二台显示器(双显示器设置,带有坞站的笔记本电脑)

powershell - 将输入的数字修改为特定的模式格式?

linux - 我需要使用 sed 找到匹配项并删除该匹配项之前的 2 行和之后的 3 行

通过 Powershell SSH (POSH) 进行 MYSQLDUMP