在 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,并且我使用其他传统命令得到的结果不一致。