PowerShell (sometimes appended with Core though that terminology is dying out) is a cross-platform task automation and configuration management framework (e.g., What is PowerShell (Core)?), It includes a command-line shell and scripting language (like most shells) but unlike most shells PowerShell is object oriented rather than text oriented making it very flexible for scripting complex tasks. On Linux and Mac machines this is the only 'flavor' of PowerShell.

There is an earlier Windows PowerShell (e.g., What is (Windows) PowerShell?) which runs only on Windows machines and is preinstalled with Windows. There are no plans to add new functionality to Windows PowerShell but it has some Windows only features not shared by the cross-platform Core version. So for deep Windows system administration, Windows PowerShell is still an important tool. At this writing PowerShell (Core) needs to be installed separately on a Windows machine but the two can run side-by-side. As a rule-of-thumb, use PowerShell (Core) if you can and turn to Windows PowerShell if the Windows specific features are needed. Windows PowerShell comes with an 'ISE' version (for integrated scripting environment) designed to help edit and debug Windows PowerShell. Development of the ISE has ended (i.e., nothing will be maintained or added); use of Visual Studio Code with a PowerShell extension is the strongly recommended replacement for Windows PowerShell ISE.

Visual Studio Code (e.g., Why did we build Visual Studio Code?) is a cross-platform source code editor but with extensions can become an IDE (integrated development environment) for a wide variety of scripting and programming languages as well as structured text like html, xml, and json. VS Code is not required to develop PowerShell (in any flavor) but it is a preferred approach and one that we will apply.