我正在尝试将create an alias(命名为哪个)发送到Get-Command cmdlet,使其在我不发送任何参数的情况下不会运行(因为如果运行时没有参数,则会输出所有可用的命令。
我知道可以使用一个函数来完成此操作,但是我想保留制表符完成功能,而不必编写要放在我的$PROFILE中的较大函数。
简而言之,我只希望别名在传递参数时起作用。
答案 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
中列出的目录之一中。