What Is PowerShell?

Learn about what Microsoft PowerShell is used for, as well as its key features and benefits.

Brien Posey

December 9, 2022

8 Min Read
What Is PowerShell?

Microsoft PowerShell is a command line environment that is commonly used as a management tool for Windows.

Even so, PowerShell is far more than just a management tool. It can also be used as a scripting environment, with capabilities rivalling those of well-known programming languages.

What Are the Features of PowerShell?

PowerShell has evolved as a command line shell and scripting language since its 2006 debut.

PowerShell vs. Windows Command Prompt

Microsoft’s first operating system (before Windows existed) was called Disk Operating System, or DOS. DOS was a simple command line environment that provided the basic functionality required to provision disks, run applications, and complete other tasks.

When Microsoft created Windows 3.x, Windows was a platform (rather than a true operating system) that ran on top of DOS. Later, the Windows NT operating system replaced DOS with the NT OS kernel. Because nearly all applications of the time were DOS based, Microsoft created the Windows Command Prompt environment for backward compatibility with DOS. The Windows Command Prompt remains a part of Windows even today.

Although PowerShell is a command line environment, it is far more advanced than the Windows Command Prompt environment. While Microsoft has made efforts to modernize the Windows Command Prompt, it can still trace its roots to nearly 40 years ago. PowerShell uses an entirely different command set from the Windows Command Prompt. However, Microsoft has created command aliases that allow some DOS commands to be used in PowerShell. When such commands are entered, PowerShell commands are in fact executing behind the scenes.

Related:A Beginner’s Guide to Microsoft PowerShell

The PowerShell command structure

Native PowerShell commands, which are known as cmdlets (pronounced “command-lets”), adhere to well-defined syntax rules. Nearly all cmdlets are made up of two words separated by a dash. The first word is a verb and tells PowerShell what you want to do. The second word is a noun and tells PowerShell what the action should be performed on. For example, the Get-Service cmdlet uses “Get” as the verb and “Service” as the noun, with a dash separating the words. When Get-Service is entered, the cmdlet retrieves a list of system services.

Example of the list of services retrieved by the Get-Service PowerShell cmdlet

Where-Object 1_0

Here is an example of the list of system services retrieved by the Get-Service cmdlet. 

Microsoft has attempted to minimize the number of words used in native PowerShell cmdlets. The fact that words are so often reused in many different cmdlets helps to make PowerShell easy to learn. As previously mentioned, the Get-Service cmdlet retrieves a list of system services, but the word “Get” is used in many other cmdlets, such as Get-Process, Get-VM, and Get-User. Similarly, the word Service is used in many different cmdlets – e.g., Stop-Service, Start-Service, and Restart-Service.

Learn more: What Are the Basic PowerShell Commands?

PowerShell has a rich set of cmdlets

The latest version of PowerShell for Windows 10 includes over 12,000 cmdlets. Even so, Microsoft has chosen to make PowerShell extensible, meaning that additional cmdlets can be easily created.

Not only is it possible for PowerShell users to make their own custom cmdlets, but Microsoft and other software vendors also commonly create custom cmdlets. This allows other products to be managed through PowerShell. Microsoft, for example, has created PowerShell modules (collections of custom cmdlets) for Azure Active Directory, Microsoft 365, and System Center, just to name a few.

What Are the Advantages of PowerShell?

PowerShell offers powerful management and scripting abilities.

PowerShell management capabilities

PowerShell is deeply intertwined with the Windows operating system, and nearly every Windows feature and configuration setting can be managed using PowerShell.

Perhaps more importantly, PowerShell supports remoting, which means that a PowerShell session can be directed toward a remote system, thus allowing for remote management.

Additionally, PowerShell was designed from the beginning to support bulk management. Since GUI interfaces tend to scale poorly, PowerShell represents an easier option for performing management tasks in bulk across large numbers of systems.

PowerShell scripting Capabilities

PowerShell cmdlets can be combined into scripts, which are essentially text files with a .PS1 file extension. The scripts can leverage the entire library of PowerShell cmdlets, as well as use external PowerShell modules and the entire .NET framework.

PowerShell scripts can be used to automate tasks, such as the storage provisioning process within Windows Server.

Not only is PowerShell an extremely powerful scripting language, but entire applications have been written in PowerShell.

Cross Platform

PowerShell was originally designed to act as a management tool for Windows. Over time, Microsoft has made PowerShell open source and cross platform. 

PowerShell is currently available for Windows, Linux, and MacOS, which you can download on Microsoft’s website. There are even PowerShell builds for ARM and Docker.

It is worth noting that because PowerShell was originally designed for use as a Windows management tool, many PowerShell cmdlets are specific to Windows. As such, the cross-platform PowerShell builds support far fewer cmdlets than the PowerShell version that is included with Windows.

Get Started with PowerShell

These articles provide instructions that will help new users. 

More Scripting Guidance

These articles delve deeper into writing PowerShell scripts.

PowerShell Security Advice

Learn about securing PowerShell, as well as using PowerShell for security-related tasks. 

  • How To Encrypt PowerShell Scripts: PowerShell scripts can contain sensitive information that you should always safeguard. Find out how to encrypt your scripts.

  • How To Manage Credentials in PowerShell: Credentials have always presented a problem for PowerShell scripts, since many scripts require authentication before the script can run. There are three options for credential management, each with its inherent security risks.

  • How To Find Failed Logon Attempts in PowerShell: This technique is designed to keep you aware of what is going on within your network.

  • How to Sign PowerShell Scripts: Read this three-part guide to learn how to deploy an enterprise certificate authority (CA) on Windows Server, acquire a certificate from that CA, and then use the certificate to sign a PowerShell script.

  • Fileless Malware Attacks and PowerShell: A fileless malware attack based on PowerShell uses PowerShell’s native capabilities to attack the victim. This series explains this type of attack and protecting your systems.

PowerShell-based Storage Management

PowerShell can greatly ease storage management. Read these articles about performing key tasks.

PowerShell Tricks and Tips

Boost your skills with these articles, which look at interesting ways you can use PowerShell.

About the Author(s)

Brien Posey

Brien Posey is a bestselling technology author, a speaker, and a 20X Microsoft MVP. In addition to his ongoing work in IT, Posey has spent the last several years training as a commercial astronaut candidate in preparation to fly on a mission to study polar mesospheric clouds from space.


Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like