PowerShellのエイリアスに独自のバージョンを作りたいと思っています。オーバーライドされたエイリアスを完全に削除するのではなく、名前を変更して、必要に応じて使用することができます。たとえば、set
の名前をorig_set
に変更し、set
の独自の新しい定義を追加します。PowerShellでエイリアスの名前を変更する方法は?
PS> alias *set*
CommandType Name Definition
----------- ---- ----------
Alias set Set-Variable
PS> function Rename-Alias($s0, $s1) { Rename-Item Alias:\$s0 $s1 -Force }
PS> Rename-Alias set orig_set
PS> alias *set*
CommandType Name Definition
----------- ---- ----------
Alias set Set-Variable
すべてのアイデアは、これが動作していない理由として:
これは私がこれまで試した何ですか?ある
Rename-Item Alias:\set original_set -Force
、あなたが得るを使用する方法を学ぶ:
私は今説明することはできませんが、現在のスコープであなたのrename-alias関数を実行すると(少なくとも現在のスコープがグローバルスコープの場合)動作します。 '。名前の変更 - 別名set orig_set'。 –
@Keith Hill、hmm、私はいくつかのマシンでこれを試しました。主に私のプロファイルスクリプトでRename-Aliasを定義していますが、コマンドラインで関数を定義しても、常に同じ動作になります。 'set'エイリアスの名前は変更されません。私はPowerShell 2を使用しています、それは重要ですか?私はRemoteSignedの実行を使用しています、それは重要ですか? – jwfearn
このトリックは関数を "定義"する場所ではなく、どのスコープで実行されるかです。コマンドの前に '.'を置くと、それをソーシングしています。つまり、現在のスコープで関数の本体を実行したかのように実行されます。私はRemoteSignedに設定されたポリシーでv2を実行しています。 –