我试图以create an alias cmdlet的Get-Command(命名为哪个),如果我没有发送任何参数它不会运行(因为如果没有参数运行它会输出所有可用的命令)。
我知道这可以使用函数完成,但我想保留选项卡完成功能,而不必编写一个放在我的$PROFILE中的相当大的函数。
简而言之,我只希望别名在传递参数时起作用。
您不能使用别名来执行此操作,因为PowerShell别名只能引用另一个命令名称或路径,因此既不包含参数也不包含自定义逻辑。
虽然你确实需要一个函数,但它不一定是一个相当大的函数:
function which { if ($args.count) { Get-Command @args } else { Throw "Missing command name." } }
但请注意,虽然传递-?
以显示Get-Command
的帮助确实有效,但参数的制表符完成却没有。
为了获得制表符,你需要编写一个proxy function或至少复制Get-Command
的参数声明 - 然后确实使函数变大。
如果关注的只是$PROFILE
本身的大小,你可以编写一个代理脚本 - which.ps1
- 你也可以用which
调用它,假设你把它放在$env:Path
中列出的一个目录中。