PowerShell,传递参数的cmdlet别名

时间:2015-03-22 02:21:18

标签: powershell

我希望Get-Help默认显示-Detailed信息,并有分页输出。我编写了一个名为“帮助”的函数来执行此操作,但它不处理cmdlet之外的参数以获取帮助。我希望splatting可以传递额外的参数,但事实并非如此。这是我天真的尝试:

function Help { Get-Help -Detailed @args | less}

如果您只使用一个参数(例如help Get-ChildItem)调用它,它可以正常工作,但如果您使用更多内容调用,例如help Get-ChildItem -Parameter Path则会出错:

Get-Help : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:17
+ function Help { Get-Help -Detailed @args | less}
+                 ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-Help], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.GetHelpCommand

有谁知道是否有办法做到这一点并不是非常难看?

我注意到thisthis类似的答案,但它们不适用于上述情况。

2 个答案:

答案 0 :(得分:1)

假设您使用PowerShell V3 +,您可以这样做:

$PSDefaultParameterValues['Get-Help:Detailed']=$true

并使用内置Help功能,该功能具有屏幕分页功能(使用Less而不是More进行分页,运行New-Alias more less)。

答案 1 :(得分:1)

你想要的是Proxy Function

通常,这需要在代理功能中重新创建原始命令中的所有参数。我没有使用它,但是这个script发布在脚本存储库中,它应该有助于减少它的繁琐。