PowerShell,通过参数传递的cmdlet别名

PowerShell,通过参数传递的cmdlet别名,powershell,Powershell,“我希望获得帮助”在默认情况下显示了-详细的信息,并已分页输出。为此,我编写了一个名为“Help”的函数,但它不处理cmdlet之外的参数来获取帮助。我希望Splating能够通过额外的参数,但事实并非如此。以下是我天真的尝试: function Help { Get-Help -Detailed @args | less} 如果只使用一个参数调用它(如help Get ChildItem),则可以正常工作,但如果使用更多参数调用(如help Get ChildItem-参数路径),则会出现错

“我希望获得帮助”在默认情况下显示了
-详细的
信息,并已分页输出。为此,我编写了一个名为“Help”的函数,但它不处理cmdlet之外的参数来获取帮助。我希望Splating能够通过额外的参数,但事实并非如此。以下是我天真的尝试:

function Help { Get-Help -Detailed @args | less}
如果只使用一个参数调用它(如
help Get ChildItem
),则可以正常工作,但如果使用更多参数调用(如
help Get ChildItem-参数路径),则会出现错误:

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
有人知道有没有一种方法不那么难看吗


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

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

$PSDefaultParameterValues['Get-Help:Detailed']=$true
并使用内置的
Help
功能,该功能具有屏幕分页功能(要在分页时使用更少而不是更多,请运行
newalias More-Less
)。

您需要的是一个


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

所谓“分页输出”,是指“更多”功能吗?如果是这样,您应该知道更多功能在Powershell ISE中的工作方式与在控制台主机中的不同。据我所知,原因是ISE没有像控制台主机那样设置窗口大小。是的,更多的功能。只是我用的更少,因为。。。我现在记不清了,但功能更全面了。我认为它可以让你向上滚动和一些其他整洁的东西。我偶然发现了你提到的ISE问题。太糟糕了,我喜欢这个。如果有一种方法可以隐式地将管道传输到更少的话。@JVimes您可以这样做
新建别名more-Less
,而内置函数
Help
将使用
Less
而不是
more
。我完全没有意识到Help是一个完全不同的函数,带有屏幕分页。我以为那只是个化名。在这种情况下,这正是我想要的。谢谢我担心会是那样的。至少它应该得到参数的制表符完成,这是我的解决方案所没有的。我现在可能还是用我的,需要的时候就把它全部打印出来。但是了解代理函数是很好的。更新:因为我使用的是v3+,PetSerAl的解决方案工作得更好。但这应该是v1和2的答案。我没有建议将其作为解决方案,因为它不满足您的要求,即在交易中让输出也通过较少的管道传输。我也不这么认为,但事实证明PowerShell的内置帮助命令是一个代理函数,它已经通过管道传输到了更多。直到今天我才意识到这一点(我还以为这只是一个别名)。以下是工作链接: