Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

powershell max/first/aggregate functions

Tags:

powershell

First of all, i`m .NET developer and LOVE LINQ and extension methods in C#. But when i scripting i need something equivalent to Enumerable extension methods

Can anybody give me any suggestion/explain best practice about how to work in such scenarios in Powershell. For example, assume i want to take max element from array:

$arr = @(2, 1, 3) $max = $arr.MAX() #?? what should i do in this case? 
like image 945
Dzmitry Martavoi Avatar asked Oct 03 '13 22:10

Dzmitry Martavoi


2 Answers

Use the Measure-Object command:

C:\PS> 2,1,3 | Measure-Object -Maximum   Count    : 3 Average  : Sum      : Maximum  : 3 Minimum  : Property : 

Or to get just the max:

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

There's also a Minimum, Average and Sum available as you can see from above. But you have to tell PowerShell to compute those with parameters to Measure-Object e.g. -Sum -Average etc.

like image 195
Keith Hill Avatar answered Sep 23 '22 21:09

Keith Hill


Keith correctly mentions PowerShell equivalents to some LINQ extension methods. Note that you can call most extension methods from PowerShell, you just can't invoke them like they are members.

Extension methods are really just static methods with some extra rules in C# to allow them to be called like members.

PowerShell doesn't implement any of those rules, but that doesn't stop you from calling them as static methods, e.g.

[System.Linq.Enumerable]::Average([int[]](1..10)) 
like image 28
Jason Shirk Avatar answered Sep 24 '22 21:09

Jason Shirk