Microsoft PowerShell Core is the open-source version of the Microsoft PowerShell automation and configuration management tool built on the .NET Core that runs on Windows, Linux and macOS systems.
Microsoft PowerShell Core features a command line interface (CLI) -- or "shell" -- along with an extensive scripting language. Microsoft PowerShell Core runs on the open-source, cross-platform .NET Core; the Window-only version of PowerShell runs on the .NET Framework. Microsoft released Microsoft PowerShell Core to the open-source community as an alpha development effort in August 2016. Microsoft released the Microsoft PowerShell Core Beta.1 in May 2017.
Most tasks within PowerShell are performed by PowerShell commands called cmdlets, which are .NET classes. Each cmdlet performs a specific function. There are hundreds of cmdlets that administrators can use to combine into scripts to execute complex operations. Cmdlets support several important types of parameters, and can interact with file systems and structured data, such as JSON and XML. The advantage of a PowerShell script is it runs in an automated, predictable, repeatable way.
Microsoft PowerShell Core distributions
Microsoft PowerShell Core is available in a wide array of different packages called distributions or distros. Administrators can download the appropriate Microsoft PowerShell Core package from its GitHub repository. Each package is intended for a particular operating system version. For example, Windows .msi packages are available for Windows 7 (x86), Windows 7 and Windows Server 2008 R2 (x64), Windows 8.1 and Windows Server 2012 R2 (x64), and Windows 10 and Windows Server 2016 (x64).
Debian .deb packages support Linux versions including Debian, Ubuntu 14.04, Ubuntu 16.04 and Kali Linux.
Red Hat .rpm packages support additional Linux versions such as CentOS, Red Hat Enterprise Linux and OpenSUSE.
Administrators can download the AppImage version of Microsoft PowerShell Core to run on other Linux distributions.
An Apple .pkg file is available on macOS 10.12.
Microsoft PowerShell Core can run in Docker containers built with supported Linux distributions.
Microsoft PowerShell Core caveats
Administrators need to be aware of case sensitivity, which might limit cross-platform script compatibility. Windows is not case sensitive, but Linux is. Some values tied to the Linux operating system, such as environment variables, can be case sensitive. In those cases, a script must use correct case to function properly on a Linux system.
Administrators need to use care when they use forward and backward slashes to ensure slashes are consistent with the particular platform.
Finally, PowerShell supports Linux aliases under Windows, but those aliases do not exist on Linux and MacOS. This is another area where command usage might result in cross-platform script incompatibility, but it may be addressed in a future release.
Microsoft PowerShell Core cannot add the graphic user interface (GUI) to Windows Server Core installations. This Microsoft PowerShell Core to GUI support existed for older versions of Windows, such as Windows Server 2012 and Windows Server 2012 R2, but Microsoft depreciated the capability in Windows Server 2016. To add a GUI to Server Core, the administrator needs to reinstall the OS.
Microsoft PowerShell Core development
Administrators and developers can follow the progress of Microsoft PowerShell Core on its GitHub site. As an open-source project, work on Microsoft PowerShell Core's feature set and operating system support will largely be determined by the developer community. Anyone can support and contribute to the ongoing development of Microsoft PowerShell Core through GitHub.