Totally Agree.

Other things I managed to get annoyed about with PowerShell, since this article was written:

  • TAB completion cycles through options instead of showing a list – meaning you can never be sure of what options are available other then the first, and if you happen to hit any key after the TAB, you have to backspace and try again (granted, this is not new for PS, it was bad like that in cmd.exe).
  • The “Verb-Object” syntax makes it really hard to find what you want with TAB completion. .e.g I want a list of services: Get[tab], and you have to cycle through all the things you can get until you get to Get-Service at “S”. UN*X is more intuitive with “object verb” syntax: service[tab] -> list of services -> [tab] -> operations on each service.
  • Default “execution policy” doesn’t actually allow you to use PS scripts. If you create helper scripts (because the command line syntax is horrible mess) and run them from the console, then you either have to change the default policy on all the systems you manage, or use contrived “bypass” mode.
  • As Berferd mentioned – forget about double clicking a script – it cannot be made to work.
  • Logic operations use weird perl-like syntax (-eq instead of ==) which is hard to remember.
  • Automatic conversion of single item lists into a single value, but not vice versa – ruins more carefully thought out scripts than any other programming mistake.
  • Automatic parsing of command line arguments for scripts is complex, unnecessarily verbose, inflexible and cannot be turned off!