PowerShell Core v7.0.0-preview.3 releases: PowerShell for every system

PowerShell Core

PowerShell Core is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework that works well with your existing tools and is optimized for dealing with structured data (e.g. JSON, CSV, XML, etc.), REST APIs, and object models. It includes a command-line shell, an associated scripting language and a framework for processing cmdlets.

PowerShell Core

What’s the difference between Windows PowerShell and PowerShell Core?

There are now two editions of PowerShell:

Windows PowerShell is the edition of PowerShell built on top of .NET Framework
(sometimes referred to as “FullCLR”):

  • This is the PowerShell that has been in widespread use for the last ~10 years.
  • Because of it’s dependency on the .NET Framework, Windows PowerShell is only available on Windows (hence the name).
  • The released versions of Windows PowerShell include 1.0, 2.0, 3.0, 4.0, 5.0, and 5.1.
  • Windows PowerShell is available as a built-in component in Windows client and Windows Server.
  • Windows PowerShell is launched as powershell.exe.
  • On Windows PowerShell 5.0/5.1, $PSVersionTable.PSEdition is set to Desktop.
  • Any usage of .NET-based functionality (e.g. C# cmdlets, Add-Type, and the invocation of static .NET Methods), relies on the .NET Framework runtime. This means Windows PowerShell’s .NET usage is limited to the functionality exposed by the .NET Framework and .NET Standard.
  • Continues to be supported via critical bug fixes in the newest releases of Windows and Windows Server

PowerShell Core is the edition of PowerShell built on top of .NET Core
(sometimes simplified to “CoreCLR”).

  • PowerShell Core is cross-platform, available on Windows, macOS, and Linux, thanks to the cross-platform nature of .NET Core.
  • PowerShell Core is launched as pwsh.exe on Windows and pwsh on macOS and Linux
  • On PowerShell Core, $PSVersionTable.PSEdition is set to Core.
    Note: while PowerShell Core 6.0 is cross-platform, there is also a PowerShell Core 5.0/5.1 released exclusively as part of Microsoft Nano Server.
  • Any usage of .NET-based functionality (e.g. C# cmdlets, Add-Type, and the invocation of static .NET Methods), relies on the .NET Core runtime. This means PowerShell Core is limited to the functionality exposed by .NET Core and .NET Standard.

PowerShell Core is officially supported on the following platforms:

  • Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016
  • Windows Server Semi-Annual Channel
  • Ubuntu 14.04, 16.04, and 17.04
  • Debian 8.7+, and 9
  • CentOS 7
  • Red Hat Enterprise Linux 7
  • OpenSUSE 42.2
  • Fedora 25, 26
  • macOS 10.12+

Our community has also contributed packages for the following platforms,
but they are not officially supported:

  • Arch Linux
  • Kali Linux
  • AppImage (works on multiple Linux platforms)

Changelog v7.0.0-preview.3

Breaking Changes

  • Remove kill alias for Stop-Process cmdlet on Unix (#10098) (Thanks @iSazonov!)
  • Support for starting PowerShell as a login shell (pwsh -Login / pwsh -l) support (#10050)

Engine Updates and Fixes

  • Additional Telemetry – implementation of RFC0036 (#10336)
  • Implement ForEach-Object -Parallel as an experimental feature (#10229)
  • Skip JumpList on NanoServer and IoT (#10164)
  • Make Get-DscResource work with class based resources (#10350)
  • Fix #requires -version for pwsh 7 to include 6.1 and 6.2 in PSCompatibleVersions (#9943) (Thanks @bgelens!)
  • Add dispose of _runspaceDebugCompleteEvent event object. (#10323)
  • Fix performance regression from disabling debugger in system lockdown mode (#10269)
  • Special case the posix locale in WildcardPattern (#10186)
  • Use Platform.IsWindowsDesktop instead of checking both NanoServer and IoT (#10205)

General Cmdlet Updates and Fixes

  • Enable Experimental Features by default on Preview builds (#10228)
  • Enable -sta and -mta switches for pwsh (-sta is required for GUIs) (#10061)
  • Make breakpoints display better over PowerShell remoting (#10339) (Thanks @KirkMunro!)
  • Add support for AppX reparse points (#10331)
  • Make module name matching for get-module -FullyQualifiedName case insensitive (#10329)
  • Expose PreRelease label in PSModuleInfo formatter (#10316)
  • Add -Raw switch to Select-String which allows returning only the string that was matched (#9901) (Thanks @Jawz84!)
  • Performance

  • Reduce allocations in MakePath() method (#10027) (Thanks @iSazonov!)
  • Remove extra check that the system dll exists (#10244) (Thanks @iSazonov!)
  • Avoid boxing when passing value type arguments to PSTraceSource.WriteLine (#10052) (Thanks @iSazonov!)
  • Reduce allocations in Escape() and Unescape() (#10041) (Thanks @iSazonov!)

Code Cleanup

  • Add the license header to nanoserver.tests.ps1 (#10171)
  • Mark -parallel and -throttlelimit reserved for foreach and switch statements (#10328) (Thanks @KirkMunro!)
  • Deprecate workflow debugging code (#10321) (Thanks @KirkMunro!)
  • Fix style issues in InternalCommands.cs (#10352) (Thanks @iSazonov!)
  • Deprecate internal HelpCategory.Workflow enumeration (#10319) (Thanks @KirkMunro!)
  • Update Microsoft.PowerShell.CoreCLR.Eventing to resolve conflict with System.Diagnostics.EventLog(#10305)
  • Don’t collect process start time as it’s not being used on consolehost startup (#10294)
  • .NET Core 3.0 now aborts the thread for us. Remove the ThreadAbortException code (#10230) (Thanks @iSazonov!)
  • Use nameof() in LocationGlobber and PathInfo (#10200) (Thanks @iSazonov!)

Tools

  • Fix Hungarian prefix my (#9976) (Thanks @RDIL!)
  • Fix spelling error in issue template (#10256)
  • Quote arguments in .vscode/tasks.json in case of spaces (#10204) (Thanks @msftrncs!)

Tests

  • Remove markdownlint tests due to security issues (#10163)
  • Add tests for WildcardPattern.Escape() and Unescape() (#10090) (Thanks @iSazonov!)
  • Cleanup Docker release testing (#10310) (Thanks @RDIL!)

Build and Packaging Improvements

  • Update Microsoft.Management.Infrastructure version to 2.0.0-preview.2 (#10366)
  • Move to .NET Core 3.0 preview.8 (#10351) (#10227) (Thanks @bergmeister!)
  • Bump NJsonSchema from 10.0.21 to 10.0.22 (#10364)
  • Add Microsoft.PowerShell.CoreCLR.Eventing.dll to exception list for build fix (#10337)
  • Bump Microsoft.CodeAnalysis.CSharp from 3.1.0 to 3.2.1 (#10273) (#10330)
  • Revert the temporary AzDevOps artifact workaround (#10260)
  • Fix macOS build break (#10207)

Documentation and Help Content

  • Update docs for 7.0.0-preview.2 release (#10160) (#10176)
  • PSSA also includes formatting (#10172)
  • Refactor security policy documentation so that they appear in the Security policy tab of GitHub (#9905) (Thanks @bergmeister!)
  • Add tooling section to PR template (#10144)
  • Update README.md and metadata.json for next releases (#10087)
  • Update DotNet Support links (#10145)
  • Update our language on our policy applying to security issues (#10304)
  • Update dead links from powershell.com (#10297)
  • Create Distribution_Request issue template (#10253)
  • Fix: Removed dependency file with Dependabot (#10212) (Thanks @RDIL!)

Download