Reports have spread like wildfire that the MS-DOS style command prompt is out the door to make way for PowerShell. The “news” riled up many enthusiasts, developers, and businesses that rely heavily on the Cmd.exe. So much so that Senior Project Manager at Microsoft Rich Turner posted an official blog today that announces that no, the sky is not falling!
— Rich Turner (@richturn_ms) January 5, 2017
The speculation first entered circulation after the release of Windows 10 Insider build 14971 where some of the patch notes were taken out of context. It read:
PowerShell in the Shell: In an effort to bring the best command line experiences to the forefront for all power users, PowerShell is now the defacto command shell from File Explorer. It replaces Command Prompt (aka, “cmd.exe”) in the WIN + X menu, in File Explorer’s File menu, and in the context menu that appears when you shift-right-click the whitespace in File Explorer. Typing “cmd” (or “PowerShell”) in File Explorer’s address bar will remain a quick way to launch the command shell at that location. For those who prefer to use Command Prompt, you can opt out of the WIN + X change by opening Settings > Personalization > Taskbar, and turning “Replace Command Prompt with Windows PowerShell in the menu when I right-click the Start button or press Windows key+X” to “Off“.
Computer World’s misconception that PowerShell was replacing Cmd.exe grabbed everyone’s attention. Fortunately, Turner clarified that Cmd is a vital feature of Windows and isn’t going anywhere. He explained:
- Much of the automated system that builds and tests Windows itself is a collection of many Cmd scripts that have been
created over many years, without which we couldn’t build Windows itself!
- Cmd is one of the most frequently run executables on Windows with a similar number of daily launches as File Explorer,
Edge and Internet Explorer!
- Many of our customers and partners are totally dependent on Cmd, and all it’s quirks, for their companies” existence!
Another notion that seemed to strike a nerve for Turner was the assumption that the Cmd was virtually the same as MS-DOS, the simple command-line shell operating system that last shipped over sixteen years ago. Turner went on to clarify in great detail the differences between the two, noting that MS-DOS was written in x86 assembly and wasn’t at all portable to further CPUs. Whereas Cmd was written as a Win 32 app in C language, making it much more versatile all the way from Windows NT to the current Windows 10.
Interesting note: 32-bit versions of Windows derived from NT include an additional shell “command.com” which runs many MS-DOS scripts and legacy 16-bit apps in a Windows NT Virtual DOS Machine (NTVDM) using the x86″ Virtual 8086 mode along with some legacy “quirks”. 64-bit versions of Windows do not include command.com or the NTVDM.
PowerShell is the powerful younger brother to Cmd and has been around in the background for ten years already. While it is designed for more use in the future, much of the Windows build system continue to use the Cmd environment. “If we change Cmd, we tend to break someone,” Turner stated simply.
It’s obvious Turner feels very passionate about the Cmd misconception. He’s even tagged the link to the blog post on his Twitter bio, just in case.
(edit: updated to reflect the differences between MS-DOS command prompt and CMD, although we note it in the post)Further reading: build 14971, Cmd.exe, Microsoft, MS-DOS, PowerShell, Windows 10