PowerShell Sorting by Multiple Columns
PowerShell's Sort-Object cmdlet is super useful, especially when preparing output for human consumption. A few people have found my blog while looking for more information about its use, specifically while looking for how to sort by multiple columns (well, properties, technically). I've never done so (much less written about it), so I hope those folks found answers elsewhere. But, it got me curious... and it turns out that it's really easy.
The Technet article on Sort-Object has the answer directly spelled out: just use commas to create a list of properties to sort by (in order to precedence). Let's look at some examples! First, prepare a variable with some good sortable data:
The Technet article on Sort-Object has the answer directly spelled out: just use commas to create a list of properties to sort by (in order to precedence). Let's look at some examples! First, prepare a variable with some good sortable data:
$myData = get-eventlog System -newest 25
And then we can get to sorting! Say you want to sort primarily by EntryType (Warning, Information, Error) and then by Source. Easy-peasy:
$myData | sort EntryType,Source
How about if you want it to be in descending order? Yeah, there's a switch for that:
$myData | sort EntryType,Source -Descending
Hmm... but that's interesting. It affected both of the sort properties... what if you only wanted the Source list to be descending? That takes a little more work, but that same Technet article has the solution. Just use the following hash table syntax for your properties: @{Expression="Property Name";Descending=$true}. Let's give it a try!
$myData | sort EntryType,@{Expression="Source";Descending=$true}
There you have it!
Comments
Post a Comment
Sorry guys, I've been getting a lot of spam recently, so I've had to turn on comment moderation. I'll do my best to moderate them swiftly after they're submitted,