Я хочу сделать свои собственные версии некоторых встроенных псевдонимов 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
Любые идеи, почему это не работает?
Я не могу объяснить это прямо сейчас, но если вы выполняете свою функцию переименования в текущей области действия, она работает (по крайней мере, когда текущая область действия является глобальной областью), например. '. Переименовать-Alias установить orig_set'. –
@ Keith Hill, хм, я пробовал это на нескольких машинах. Я в основном определяю Rename-Alias в моем скрипте профиля, но даже определение функции в командной строке всегда приводит к такому же поведению: псевдоним 'set' не переименовывается. Я использую PowerShell 2, это важно? Я использую исполнение RemoteSigned, так ли это? – jwfearn
Трюк не в том, где вы «определяете» функцию, но в какой области она работает. Когда вы предируете команду с помощью «.», Вы получаете ее. То есть, он работает так, как если бы вы выполнили тело функции в текущей области. BTW Я запускаю v2 также с политикой, установленной на RemoteSigned. –