Microsoft PowerShell is a free and open source command shell, scripting language, and remote management framework. PowerShell is intended for network administrators, cloud hosting administration, not professional web programmers, and has replaced the old CMD shell and VBScript as the most popular shell and scripting language for Windows. PowerShell is also available for GNU/Linux and Mac OS on GitHub (https://github.com/PowerShell/PowerShell).
Strictly speaking, PowerShell is part of the Windows Management Framework (WMF), so Microsoft and others often refer to “WMF” instead of to “PowerShell”, but this is a branding and marketing mistake, so manual will almost always just refer to PowerShell and rarely to WMF.
Similar to the CMD shell, you can work in PowerShell interactively, manually typing and executing commands as needed while “in” the shell, or it can run uncompiled scripts written in a scripting language specifically for it. PowerShell scripts end with the “psi” filename extension, not “bat” or “cmd”, and are simple text files.
Unlike the CMD shell, however, PowerShell is built on top of the .NET Framework and is itself a compiled .NET program. PowerShell does not pipe text streams, as virtually every other Windows- or UNIX-based shell does, but complete .NET objects, including all of their properties and methods!
These properties and methods are accessible to your PowerShell scripts, and PowerShell was specifically designed around them. This object-orientation in a shell scripting language is sometimes disorienting to administrators with prior shell language experience.