有没有办法以仅在将参数传递给别名的情况下运行的方式为cmdlet创建别名?

时间:2019-04-05 15:54:28

标签: powershell alias

我正在尝试将create an alias(命名为哪个)发送到Get-Command cmdlet,使其在我不发送任何参数的情况下不会运行(因为如果运行时没有参数,则会输出所有可用的命令。

我知道可以使用一个函数来完成此操作,但是我想保留制表符完成功能,而不必编写要放在我的$PROFILE中的较大函数。

简而言之,我只希望别名在传递参数时起作用。

1 个答案:

答案 0 :(得分:0)

您不能使用别名,因为PowerShell别名只能引用另一个命令 name或path ,因此既不能包含 arguments 也不能包含自定义逻辑。

因此,尽管您确实需要一个功能,但它不一定是一个 sizing 的:

function which { if ($args.count) { Get-Command @args } else { Throw "Missing command name." } }

但是请注意,虽然通过-?来显示Get-Command的帮助确实有效,但参数的制表符补全不起作用。

为了同样获得制表符的完成,您需要编写proxy function或至少复制Get-Command的参数声明-然后这样做功能相当大。

如果关注的只是$PROFILE本身的大小,则可以编写一个代理 script -which.ps1-您只需使用which就可以调用它同样,假设您将其放置在$env:Path中列出的目录之一中。