powershell max / first / aggregate函数

时间:2013-10-03 22:44:26

标签: powershell

首先,我是.NET开发人员和LOVE LINQ以及C#中的扩展方法。 但是当我编写脚本时,我需要等同于Enumerable extension methods

的东西

任何人都可以在Powershell中给我任何建议/解释如何在这种情况下工作的最佳实践。例如,假设我想从数组中获取max元素:

$arr = @(2, 1, 3)
$max = $arr.MAX() #?? what should i do in this case?

3 个答案:

答案 0 :(得分:27)

使用Measure-Object命令:

C:\PS> 2,1,3 | Measure-Object -Maximum


Count    : 3
Average  :
Sum      :
Maximum  : 3
Minimum  :
Property :

或者只获得最大值:

C:\PS> (2,1,3 | Measure -Max).Maximum

从上面可以看到,还有最小,平均和总和。但是你必须告诉PowerShell计算带有Measure-Object参数的那些,例如-Sum -Average等。

答案 1 :(得分:10)

Keith正确地提到了一些LINQ扩展方法的PowerShell等价物。请注意,您可以从PowerShell调用大多数扩展方法,您无法像调用成员一样调用它们。

扩展方法实际上只是静态方法,在C#中有一些额外的规则,允许像成员一样调用它们。

PowerShell没有实现任何这些规则,但这并不能阻止您将它们称为静态方法,例如。

[System.Linq.Enumerable]::Average([int[]](1..10))

答案 2 :(得分:0)

$ arr | foreach {if($ max -lt $ _){$ max = $ _}}; $ max