Sort version numbers - Powershell

Hey

How do I sort version numbers: (in an array)

1.1.0.8400
1.10.0.14127
1.10.1.14414
1.11.0.14649
1.11.1.14865
1.12.0.15302
1.12.1.15602
1.12.1.15662
1.2.0.9064
1.4.0.10352
1.5.0.11365
1.5.0.11534
1.6.0.12058
1.7.0.12519
1.7.1.12780
1.8.0.13165
1.9.0.13640
1.9.1.13731
LVL 1
mikeydkAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

footechCommented:
Assuming your array is saved in a variable $data.
$data | sort { [version]$_ }

Open in new window

It's essentially doing a sort based off a calculated property (i.e. the string cast as a version type).
1

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
aikimarkCommented:
You may not even have to cast the value as a version
$data | sort

Open in new window

0
footechCommented:
@aikimark - no that doesn't work because with string sorting you will get results like 1.12.1.15662 before 1.2.0.9064.
0
aikimarkCommented:
It depends on the source of the data in the array.  If they went in as versions, they shouldn't need casting.  If they came in as strings, then they will need to be cast as version data, either on input (population of the array) or in the Sort operation (as you've shown).
0
footechCommented:
It's a good point to make that it may be better to cast the data during population of the array.
I assumed that the data in the array is just strings from the way the question was asked, but that could be incorrect.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Powershell

From novice to tech pro — start learning today.