cmd.exe and batch script are horrible, no argument there.<p>Powershell is a huge improvement, though, and in many ways far surpasses the unix command line environments. You have real objects at the prompt, with fields and methods, you aren&#x27;t just wrangling plain text all over the place.  Naming and parameter sets are consistent and non-cryptic. <i>Everything</i> is tab-completable (command names, parameter names, [some] parameter values, types, registry keys, paths, history, etc, etc). Writing new shell commands is super simple. Parameter sets for scripts and shell commands are completely declarative, no more manual argument parsing.<p>Not to say there aren&#x27;t weak spots: performance and the error-handling model come to mind. Disabling execution of scripts by default, <i>in a scripting environment</i>, also a massive facepalm. There&#x27;s also the separate-but-related matter of the terminal host environment itself, which has been historically terrible on Windows. At least with Win10 that&#x27;s finally moving in the right direction.<p>Anyways, it&#x27;s a shame people still think &quot;Windows CLI&quot; == &quot;cmd.exe&quot; because most of us moved past that 6 years ago when Win7 included Powershell by default.