如何在PowerShell中重命名别名?

时间:2011-01-11 18:26:58

标签: powershell alias

我想创建一些内置PowerShell别名的自己的版本。而不是完全删除被覆盖的别名,我想重命名它们,所以如果我愿意,我仍然可以使用它们。例如,我可能会将set重命名为orig_set,然后为set添加我自己的新定义。

这是我到目前为止所尝试的:

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

关于为什么这不起作用的任何想法?

3 个答案:

答案 0 :(得分:3)

PowerShell中提供程序系统的优点是你可以在别名上使用好的'Rename-Item,因为有一个别名驱动,例如:

Rename-Item Alias:\set original_set -Force

也就是说,您将学习如何使用Get-ChildItem,Remove-Item,Copy-Item等,并且可以将它们应用于目录和文件以外的其他内容 - 只要提供程序中包含“thing”即可。要查看所有提供者执行:

Get-PSProvider

要查看从这些提供程序创建的所有驱动器,请执行:

Get-PSDrive

答案 1 :(得分:2)

function Rename-Alias($old, $new)
{
    $resolved = get-alias $old
    $cmdletName = $resolved.definition
    Set-Alias $new $cmdletname
    rm "alias:\$old" -force
}

答案 2 :(得分:-1)

一种解决方案:更改调用Rename-Alias函数的方式。而不是

PS> Rename-Alias set orig_set

这样做:

PS> . Rename-Alias set orig_set

[感谢@Keith Hill的提示。]

但是这引出了一个问题:如何编写一个函数来重命名别名,而不需要总是用点(。)调用?