I have a simple script that runs a cmdlet of a 3rd party application and outputs a table with 3 columns - Name
, Result
, JobName
. Result
only contains one of three values: Success
, Warning
, or Failed
.
Output:
Name Result JobName
---- ------ -------
server1 Success servers-A
server2 Success servers-A
server3 Warning servers-A
server4 Success servers-A
server5 Warning servers-B
server6 Success servers-B
server7 Failed servers-C
server8 Failed servers-C
What I'd like to do is sort the table by the Result
column but in the following custom order (order of importance): Failed
, Warning
, then Success
.
Example
Name Result JobName
---- ------ -------
server7 Failed servers-C
server8 Failed servers-C
server3 Warning servers-A
server5 Warning servers-B
server1 Success servers-A
server2 Success servers-A
server4 Success servers-A
server6 Success servers-B
How can this be achieved?
Here is a script block option:
ForEach ($Result in 'Success','Warning','Failed') {
$Obj | Where-Object {$_.Result -eq $Result } | Sort-Object Name
}
Assumes that your cmdlet has output the original object into a variable named $Obj
.