Windows OS ships with several apps and utility tools to help users complete different tasks. Along with apps are tools like Command Prompt (CMD) and PowerShell, which are often used for troubleshooting errors, running batch commands, and system maintenance. But what is the difference between Command Prompt and PowerShell?
On the surface, you can use both the tools and many commands are executable on both. But there are subtle differences between these two. In simpler terms, PowerShell is CMD’s elder brother and can be used to run most CMD commands, and then some more.
1. What Is Command Prompt (CMD)
Windows 95 and 98 came with Command.com, which was also known as MS-DOS. Users could interact with the OS directly using text-based commands. Microsoft then released CMD (Command Prompt) with Windows NT which was better than previous iterations.
CMD is mostly used to perform batch commands, interact with the file system (DIR commands), and even troubleshoot system-related errors that are otherwise hard to solve.
Also on Guiding Tech
2. What Is PowerShell
PowerShell was first released in 2006 for Windows XP SP2. The spruced up PowerShell 2.0 with Windows 7 brought even more features and was backward compatible with many CMD commands. Windows 10 has it as the default command-line tool. The reason PowerShell took off was its ability to work with the C# programming language that also integrates with .NET Framework.
That allowed users to write custom scripts which can be used to execute a series of commands remotely. You can also use it to automate certain administrative tasks, giving more flexibility than a humble CMD. It's a scripting environment which acts like more than just a shell. Also, it has a blue background instead of black for some reason.
3. Difference Between CMD and PowerShell
CMD is mostly used by system administrators to process batch files, troubleshoot some common errors, and fix corrupt system files.
PowerShell takes things to the next level by allowing administrators to control an entire network and all systems on that network. Unlike CMD that can only interpret and execute Batch commands, PowerShell can also interpret and execute Batch and PowerShell commands. What's that?
This is where ‘cmdlets’ come. They are a group of commands that users can execute with a single command. That group of commands is called scripts. In CMD, you have to wait until the previous command is fully executed before giving the next one. PowerShell saves time and allows automation using scripts this way.
While CMD can only work with text, PowerShell took a leaf out of Linux command lines and can also work with pipes. Pipes allow one cmdlet to share even complex data (output) with another cmdlet (input). That allows administrators to manipulate and transfer data between different programs and even computers in a network, by executing cmdlets in a defined sequence.
Make no mistake though PowerShell is powerful, it's nowhere as powerful as some command-line tools that are supported in Linux-flavored distributions..
Also on Guiding Tech
4. When to Use
The CMD is widely used for navigating the system file and folder structure, managing and interacting with it, modifying properties, and troubleshooting Windows errors. At GT, we often ask our readers to run commands like SFC (System File Checker) and DISM (Deployment Image Servicing and Management) to check for system files integrity, and repair them.
The System Administrators prefer PowerShell for managing data, especially over a network of computers. Also, since you run pretty much all commands of CMD in PowerShell, it gives an edge over the Command Prompt. Also, you can run cmdlets which are sets of commands (scripts) to perform administrative functions.
The ability to tap the code repository of the .NET Framework opens up more possibilities for PowerShell users. You can pull information about running processes (get-process cmdlet), network communication, perform database-related administrative tasks, and even cryptographic algorithms. More suitable for programmers and administrators.
Then comes the conditional logic where you can schedule tasks to execute based on the occurrence of an event, for example. Other examples of conditional logic include parameters like if, else, for, when, and switch. A simple example can be a cmdlet that will close all background apps if RAM is full or breaches a certain level in terms of usage. Neat, huh?
While these are simple examples, network admins are using PowerShell for many complex tasks. Don’t know how to create your first cmdlet? Fret not, for PowerShell enjoys a large community of enthusiasts who have shared their cmdlets that you can use.
Microsoft TechNet has a great collection of guides, examples, and links to code repositories (like GitHub). An excellent place to begin your journey. Recently, the new Windows Terminal app for Windows 10 was released that did confuse many users. However, Microsoft has made it clear that CMD is here stay. That makes a lot of sense seeing how many users still use CMD as their default command-line tool.
Next up: Looking for some CMD tips and tricks? Click on the link below to find a curated list of 11 cool CMD commands.