web-dev-qa-db-ja.com

WindowsPowerShellで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`
_

何が足りないのですか?

2
chrisphilton

その文字列全体をコマンドとして実行しようとしています。コマンドは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
Bill_Stewart

PowerShellでは、エイリアスにコマンドのパラメーターを含めることはできません。代わりに、コマンドの特定のパラメーターを「エイリアス」にラップするには、次の関数を使用します。

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

一部のパラメーターを引用符で囲むか、エスケープする必要がある場合があります。私はsshを使用しておらず、他のレガシーコマンドと一貫性のない結果が出ています。

1
Jeff Zeitlin