在 Windows PowerShell 中设置 SSH 命令的别名

在 Windows PowerShell 中设置 SSH 命令的别名

在 Windows PowerShell 中:

>ssh -i \Path\To\key.pem [email protected]像冠军一样工作。

>Set-alias sshalias "ssh -i \Path\To\key.pem [email protected]"保存别名且没有错误。

>sshalias 返回以下错误:

sshalias : The module 'ssh -i ' could not be loaded. For more information, run 'Import-Module ssh -i '.

At line:1 char:1 + sshalias

+ CategoryInfo : ObjectNotFound: (ssh -i \Path\To\Key.pem [email protected]:String) [], CommandNotFoundException

`+ FullyQualifiedErrorId : CouldNotAutoLoadModule`

我错过了什么?

答案1

您正在尝试将整个字符串作为命令执行。命令为ssh,后面是参数。(也就是说,您的系统上没有名为“ ”的可执行文件或脚本。)ssh -i \Path\To\Key.pem "[email protected]"

解决办法是正确执行命令:

ssh -i \Path\To\Key.pem "[email protected]"

但根据定义,PowerShell 别名不能有任何参数。

解决方法是使用函数来代替:

function sshalias { ssh -i \Path\To\Key.pem "[email protected]" }

答案2

PowerShell 不允许别名包含命令的参数。相反,要将命令的特定参数包装到“别名”中,请使用函数:

function sshalias {
    ssh -i \Path\To\key.pem [email protected]
}

您可能需要引用或转义某些参数;我不使用 ssh,并且我使用其他传统命令得到的结果不一致。

相关内容