Uninstall-Package -Version is Evil!!
It is evil because the Version parameter is an alias for - wait for it - MinimumVersion! So if you have Foo v1.0 and Foo v2.0 installed on your machine and you want to uninstall v1.0 - you know because you now have 2.0 and no longer need v1.0 - you say hey PowerShell "Uninstall-Package -Name Foo -Version 1.0". And PowerShell will proceed to uninstall v2.0!! Because it is following MinimumVersion semantics i.e. the highest version number >= the specified "minimum version". But you didn't specify "-MinimumVersion", you specified "-Version".
A suggested fix is to change Version to be an alias for RequiredVersion for this particular command.
This work was completed and is available in WIndows 10 anniversary updated, Server 2016 RTM and GA builds, and WMF 5.1.
Ryan Yates commented
Personally I would prefer that it was an alias for RequiredVersion as Keith suggested as it makes logical sense in this instance to only target the specified version where as in the Installing functions it *shouldn't* matter if it gets the next version up as long as it gets at least the specified version and if there is a requirement for a specific version then we can already do this via the RequiredVersion Parameter.
That is how I would expect them to function from a user experience point of view and would probably expect most PowerShell end users to expect it to function that way too
Kirk Munro commented
Since the -Version alias on other cmdlets means minimum version, if a breaking change is to be made (and I feel it's a good idea for this command), I'd prefer they simply remove the Version alias from the command rather than to make it have different behaviour between commands. So I'm upvoting in general for a change, but I think the better change is to remove the -Version alias, at least from Uninstall-Package.