CHANGELOG/6.0.md
sc alias which conflicts with sc.exe (#5827)DLLImport failure of libpsrpclient in PowerShell Remoting on Unix platforms (#5622)lee.io Tests with WebListener (#5709) (Thanks @markekraus!)Pester module and other issues (#5692)HttpBin.org Tests with WebListener (#5665) (Thanks @markekraus!)MSI packages to not overwrite each other (#5812) (Thanks @bergmeister!)Restore-PSPester to include the fix for nested describe errors (#5771)Microsoft.PowerShell.Core module (#5820)Raspberry-Pi about supported devices (#5773)Github to GitHub in CONTRIBUTING.md (#5697) (Thanks @stuntguy3000!)win-arm build on Windows IoT (#5682)AllSigned execution policy require modules under $PSHome to be signed (#5511)2.0.4 dotnet core runtime. (#5677)powershell or powershell.exe (#5408)Paths.count > 0, in the *-FileCatalog CmdLets (#5596)libpsl-native binary name for dllimport. (#5580)Get-EnvironmentInformation to properly check for CoreCLR (#5592) (Thanks @markekraus!)libcurl+openssl+gssapi (#5629) (Thanks @markekraus!)Import-CliXml tests which still use powershell instead of pwsh and make sure it fails if it regresses (#5521) (Thanks @markekraus!)Runspaceconfiguration from comments and xUnit test code (#5569) (Thanks @Bhaal22!)HttpListener Response Tests with WebListener (#5540, #5605) (Thanks @markekraus!)powershell_xxx.inc in Start-Build (#5538) (Thanks @iSazonov!)Install-Module Pester. (#5623, #5631)New-UnixPackaging into functions to make the large function more readable. (#5625)Start-PSPester doesn't find Pester (#5673)win-arm and win-arm64 (#5664)Install-Debian to work with VSTS Hosted Linux Preview (#5659)linux-arm tarball package to release build (#5652, #5660)win-arm and win-arm64 (#5524)New-UnixPackage more readable (#5625)PowerShellGet tests to validate the new install location of AllUsers scope. (#5633)Pester folder from the Markdown meta test (#5636)Select-Xml tests (#5591)signed (#5527)CompletionResult (#5550) (Thanks @bergmeister!)install-powershell.ps1 to reflect that it works cross-platform (#5465) (Thanks @bergmeister!)AmbiguousParameterSet exception (#5537) (Thanks @kvprasoon!)psrp.windows and PowerShell.Core.Instrumentation.dll libraries (#5668)using-vscode.md (#5593)Compliance work is required for Microsoft to continue to sign and release packages from the project as official Microsoft packages.
PerformWSManPluginReportCompletion, which was not used, from pwrshplugin.dll (#5498) (Thanks @bergmeister!)strlen with strnlen in native code (#5510)-Verbose to not override $ErrorActionPreference. (#5113)Get-Item -LiteralPath a*b to return error if a*b doesn't actually exist. (#5197)AllScope from most default aliases to reduce overhead on creating new scopes. (#5268)$OutputEncoding default to be UTF8 without BOM rather than ASCII. (#5369)null in Invoke-RestMethod. (#5338) (Thanks @markekraus!)PSTypeName Support for Import-Csv and ConvertFrom-Csv. (#5389) (Thanks @markekraus!).. operator, so 'a'..'z' returns characters from 'a' to 'z'. (#5026) (Thanks @IISResetMe!)CommandFactory because it serves no real purpose. (#5266)Ast for context in parameter binding and fix to glob the native command argument only when it's not quoted. (#5188)2.0.4-servicing dotnet core runtime. (#5295)ExecutionContext.LoadAssembly to load with name when file cannot be found. (#5161)os_log APIs on macOS for PowerShell Core logging. (#5310)ETW logging to Syslog on Linux. (#5144)SemanticVersion compatible with SemVer 2.0. (#5037) (Thanks @iSazonov!)Job for an issue that causes PowerShell to not respond. (#5258)CodeRush static analysis. (#5132) (Thanks @Himura2la!)psrp and libmi nuget packages on Unix platforms. (#5469)-AsHashtable to ConvertFrom-Json to return a Hashtable instead. (#5043) (Thanks @bergmeister!)Import-module to not report a loaded module was not found. (#5238)Add-Type. (#5243) (Thanks @iSazonov!)PSUserAgent generation for Web Cmdlets on Windows 7. (#5256) (Thanks @markekraus!)DCOM support from *-Computer cmdlets. (#5277)Remove-Alias Command. (#5143) (Thanks @PowershellNinja!)installpsh-suse.sh to work with the tar.gz package. (#5309)Jobject serialization support to ConvertTo-Json. (#5141)help function to not pipe to more if objects are returned instead of help text. (#5395)Unblock-File to not write an error if the file is already unblocked. (#5362) (Thanks @iSazonov!)Import-Csv support CR, LF and CRLF as line delimiters. (#5363) (Thanks @iSazonov!)SslProtocol support to Web Cmdlets. (#5329) (Thanks @markekraus!)RCEdit to embed icon and version information into pwsh.exe. (#5178)pwsh. (#5255)-CrossGen in CI to verify a fix in CrossGen tool. (#5315)Install-PowerShellRemoting.ps1 from psrp.windows nuget package. (#5330)Wix toolset download link to newer version 3.11 (#5339) (Thanks @bergmeister!)ETW manifest to remove the Windows PowerShell dependency. (#5360)tar.gz package for Raspbian. (#5387)Find-Dotnet to find dotnet with the compatible SDK. (#5341) (Thanks @rkeithhill!)install-powershell.ps1 to install PowerShell Core on windows. (#5383)-Name a dynamic parameter in Start-PSPackage. (#5415)[package] tag in PR CI and fix nightly build on macOS. (#5410)install-powershell.ps1 to work on Linux and macOS. (#5411)RCEdit step to the build phase rather than the packaging phase. (#5404)brew update issue in bootstrap script. (#5400)install-powershell.ps1 to update the current running PowerShell Core. (#5429)install-powershell.sh. (#5461) (Thanks @DarwinJS!)PowerShellGet and PackageManagement from the PowerShell Gallery. (#5452)Start-PSBuild on WSL if repository was already built on Windows. (#5346) (Thanks @bergmeister!)tasks.json from @rkeithhill. (#5453)libpsl and psrp.windows nuget packages. (#5278)README.md to absolute as they are being used in other places outside of GitHub. (#5354)pwsh. (#5368)FAQ.md about how to use PowerShell Core nuget packages. (#5366)PowerShell.Core.Instrumentation nuget package. (#5396)Compliance work is required for Microsoft to continue to sign and release packages from the project as official Microsoft packages.
hang with something more appropriate and add rules about other terms. (#5213, #5297, #5358)requestedExecutionLevel to asInvoker for pwsh.exe on Windows. (#5285)HighEntropyVA to building pwsh. (#5455)ValueFromRemainingArguments to have consistent behavior between script and C# cmdlets. (#2038) (Thanks @dlwyatt)-importsystemmodules and -psconsoleFile from powershell.exe. (#4995)-ComputerName from Get/Set/Remove-Service. (#5094)powershell to pwsh. (#5101)RunspaceConfiguration support. (#4942)-ComputerName support since .NET Core Process.GetProcesses(computer) returns local processes. (#4960)-NoTypeInformation the default on Export-Csv and ConvertTo-Csv. (#5164) (Thanks @markekraus)-Encoding to be of type System.Text.Encoding. (#5080)PATH environment variable only if PATH exists. (#5021)-LiteralPath was used to suppress wildcard expansion for navigation cmdlets. (#5038)ModuleAnalysisCache so it isn't shared with Windows PowerShell. (#5133)SecureStringCommands.resx. (#5033) (Thanks @markekraus)-InputObject for Set-Service. (#5017) (Thanks @travisty-)ValidateNotNullOrEmpty attribute to -UFormat for Get-Date. (#5055) (Thanks @DdWr)-NoNewLine switch for Out-String. (#5056) (Thanks @raghav710)Get-Verb. (#4746) (Thanks @Tadas)Get-Content -Raw to not miss the last line feed character. (#5076)-Authentication that provides three options: Basic, OAuth, and Bearer.-Token to get the bearer token for OAuth and Bearer options.-AllowUnencryptedAuthentication to bypass authentication that is provided for any transport scheme other than HTTPS.MatchInfoContext clone implementation (#5121) (Thanks @dee-see)PSHostProcess cmdlets from Unix platforms. (#5105)Add-Member to fetch resource string correctly. (#5114)Import-Module to be case insensitive. (#5097)syslog APIs in libpsl-native. (#5149)Get-ChildItem to not ignore -Depth parameter when using with -Include or -Exclude. (#4985) (Thanks @Windos)UserName, Description, DelayedAutoStart, BinaryPathName and StartupType to the ServiceController objects returned by Get-Service. (#4907) (Thanks @joandrsn).rtf files as binary so EOL don't get changed. (#5020)tools/installpsh-osx.sh and update Travis-CI to use Ruby 2.3.3. (#5065)Start-PSBootstrap to locate dotnet SDK before installing it. (#5059) (Thanks @PetSerAl)tar.gz package for Linux and macOS. (#5085)httpbin.org/response-headers Tests with WebListener. (#5058) (Thanks @markekraus)appimage.sh to reflect the new name pwsh. (#5172)pwsh in macOS launcher. (#5174) (Thanks @thezim)global.json to pick correct SDK version. (#5118) (Thanks @rkeithhill)RELATIONSHIP_SUPPORTED and SUPPORTS_IMULTIVALUEPROPERTYCMDLETPROVIDER, which has never been used. (#5066)Stop-Job. (#5091) (Thanks @travisty-)WebListener and Web Cmdlets tests. (#5035) (Thanks @markekraus)Start-PSPester if Pester module is not found (#5069) (Thanks @DdWr)powershell -help (#4989) (Thanks @iSazonov)README.md. (#5044)docs/building/linux.md to reflect the current status of powershell build. (#5068) (Thanks @dee-see).icns file for macOS. (#5073) (Thanks @thezim)testing-guidelines.md. (#5061) (Thanks @DdWr)docs/building/internals.md for building from source. (#5072) (Thanks @kylesferrazza)Get-WebListenerUrl Based Examples to WebListener README.md. (#4981) (Thanks @markekraus)pwsh. (#5182)launch.json to point to pwsh. (#5189)New-Service to return error when given unsupported -StartupType and fixed Set-Service icon failing test. (#4802)* to be used in registry path for Remove-Item. (#4866)-ShowWindow switch from Get-Help. (#4903)InvokeScript(). (#4963)void CodeMethod work. (#4850) (Thanks @powercode)PSVersion and GitCommitId from the ProductVersion attribute of assembly (#4863) (Thanks @iSazonov)powershell -version and built-in help for powershell.exe to align with other native tools. (#4958 & #4931) (Thanks @iSazonov)Assembly.LoadFrom before Assembly.Load when the file path is given. (#4196)HelpersCommon.psm1. (#4775)docs/host-powershell/README.md. (#4877)CommandNotFoundException error string. (#4934 & #4991)Remove-Service to Management module. (#4858) (Thanks @joandrsn)Set-Service command. (#4844) (Thanks @joandrsn)Select-String to exclude directories (as opposed to individual files) discovered from -Path. (#4829) (Thanks @iSazonov)Get-Date now supports more argument completion scenarios by adding ArgumentCompletionsAttribute. (#4835) (Thanks @iSazonov)-ComObject parameter of New-Object on unsupported (currently non-Windows) platforms. (#4922) (Thanks @iSazonov)ModuleVersion in New-ModuleManifest to 0.0.1 to align with SemVer. (#4842) (Thanks @LDSpits)-ResponseHeadersVariable to Invoke-RestMethod to enable the capture of response headers. (#4888) (Thanks @markekraus)UserAgent from WindowsPowerShell to PowerShell. (#4914) (Thanks @markekraus)linux-x64. (#4841)Compress-TestContent. (#4957)powershell-win-core. (#4748)Utility.Activities (Workflow code). (#4880)Microsoft.PowerShell.CoreCLR.AssemblyLoadContext.dll. (#4868)PSDesiredStateConfiguration in project files to fix complication of MOF files with the Configuration keyword. (#4979)WebListener. (Thanks @markekraus)
Select-String test from a network path. (#4921) (Thanks @iSazonov)Measure-Object test. (#4972) (Thanks @iSazonov)ShouldBeErrorId. (#4793)PSDefaultParameterValue in the global scope. (#4977 & #4892)Get-Content (#4723) (Thanks @sarithsutha)Get-Help (#4895)Get-Command -ShowCommandInfo (#4906)Get-Content -Tail (#4790)Get-Module over remoting (#4787)Start/Stop/Suspend/Resume/Restart-Service cmdlets (#4774)DateTime test (#4796).spelling (Thanks @markekraus)Get-Content -Delimiter to not include the delimiter in the array elements returned (#3706) (Thanks @mklement0)$IsOSX to $IsMacOS (#4757)PSModulePath on Windows. (#4656)GetNetworkCredential() returns null if PSCredential has null or empty user name (#4697)using module when module has non-terminating errors handled with SilentlyContinue (#4711) (Thanks @iSazonov)ValidateSetAttribute.ValidateElement() (#4722) (Thanks @iSazonov)ConvertTo-HTML (#4184) (Thanks @ergo3114)Test-ModuleManifest from loading unnecessary modules (#4541)-Stream from provider cmdlets on non-Windows (#4567)Invoke-RestMethod (#4692)Enter-PSSession exit (#4693)-WhatIf switch to Start-Process cmdlet (#4735) (Thanks @sarithsutha)Start-PSPackage produces a package (#4795)-PassThru on Pester tests to reliably catch failures (#4644)Get-Service (#4773)Set-Service and New-Service (#4785)Trace-Command (#4288)StaticParameter (#4779)Test-Wsman (#4771)New-Object -ComObject (#4776)New-Service failing test (#4806)-File and -Command consistent and make exit codes consistent with Unix standards (#4573)powershell starts instance of the current version of PowerShell. (#4481)powershell -WindowStyle to work on Windows. (#4573)-SkipHeaderValidation to work with non-standard User-Agent headers. (#4479 & #4512) (Thanks @markekraus)Unblock-File for the case of a read-only file. (#4395) (Thanks @iSazonov)Start-Trace support paths that require escaping in the underlying APIs (#3863)#if CORECLR enabled, Enable-PSRemoting and Disable-PSRemoting (#2671)install-powershell.sh installs latest powershell on macOS, even if an old version is cached in brew. (#4509) (Thanks @richardszalay for reporting.)New-WinEvent. (#4384)Format-Hex test cases to use -TestCase instead of foreach loops. (#3800)#if CORECLR codePowerShell 6.0 will be exclusively built on top of CoreCLR, so we are removing a large amount of code that's built only for FullCLR. To read more about this, check out this blog post.
*-Counter cmdlets in Microsoft.PowerShell.Diagnostics due to the use of unsupported APIs until a better solution is found. (#4303)Microsoft.PowerShell.LocalAccounts due to the use of unsupported APIs until a better solution is found. (#4302)ValidateSetAttribute enhancement: support set values to be dynamically generated from a custom ValidateSetValueGenerator. (#3784) (Thanks to @iSazonov!)$true/$false as a parameter to scripts using powershell.exe -File. (#4178)DataRow/DataRowView adapters in PowerShell Core to fix an issue with DataTable usage. (#4258)Runspaces/SessionStates. (#4209)HelpMessage property of ParameterAttribute is set to empty string. (#4334)ShellExecuteEx run in a STA thread. (#4362)-SkipHeaderValidation switch to Invoke-WebRequest and Invoke-RestMethod to support adding headers without validating the header value. (#4085)Invoke-Item -Path <folder>. (#4262)ConvertTo-Html output when using a single column header. (#4276)Length for FileInfo when using Format-List. (#4437)Get-FormatData �PowerShellVersion. (#4222)Register-PSSessionConfiguration fails if SessionConfig folder doesn't exist. (#4271)install-powershell.sh. (#4360) (Thanks to @DarwinJS!)Start-PSBuild.
Now Start-PSBuild doesn't build PSRP binary on windows. Instead, we consume the PSRP binary from a NuGet package. (#4335)Get-ChildItem on file system. (#4342) (Thanks to @jeffbi!)Rename-Item and Move-Item. (#4329) (Thanks to @jeffbi!)#if CORECLR codePowerShell 6.0 will be exclusively built on top of CoreCLR, so we are removing a large amount of code that's built only for FullCLR. To read more about this, check out this blog post.
In the beta.4 release, we've introduced a change to add the Windows PowerShell PSModulePath to the default PSModulePath in PowerShell Core on Windows. (#4132)
Along with the introduction of .NET Standard 2.0 in 6.0.0-beta.1 and a GAC probing fix in 6.0.0-beta.3,
this change will enable a large number of your existing Windows PowerShell modules/scripts to "just work" inside of PowerShell Core on Windows.
(Note: We have also fixed the CDXML modules on Windows that were regressed in 6.0.0-beta.2 as part of #4144).
So that we can further enable this backwards compatibility,
we ask that you tell us more about what modules or scripts do and don't work in Issue #4062.
This feedback will also help us determine if PSModulePath should include the Windows PowerShell values by default in the long run.
For more information on this, we invite you to read this blog post explaining PowerShell Core and .NET Standard in more detail.
PSModulePath by default on Windows. (#4132)2.0.0-preview3-25426-01 and using the .NET CLI version 2.0.0-preview2-006502. (#4144)semver as a type accelerator for System.Management.Automation.SemanticVersion. (#4142) (Thanks to @oising!)eventLogSession and EventLogReader to unlock an ETL log. (#4034) (Thanks to @iSazonov!)Move-Item cmdlet honors -Include, -Exclude, and -Filter parameters. (#3878)Get-ChildItem called -FollowSymlink that traverses symlinks on demand, with checks for link loops. (#4020)New-ModuleManifest encoding to UTF8NoBOM on non-Windows platforms. (#3940)Get-AuthenticodeSignature cmdlets can now get file signature timestamp. (#4061)Export-Counter -FileFormat parameter. (#3856)Import-Module on non-Windows platforms so that users can import modules with NestedModules and RootModules. (#4010)FileStream opened by Get-FileHash. (#4175) (Thanks to @rkeithhill!)BuildVersion property from $PSVersionTable.
This property was strongly tied to the Windows build version.
Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core.
(#3877) (Thanks to @iSazonov!)powershell.exe from -Command to -File.
This fixes the usage of #! (aka as a shebang) in PowerShell scripts that are being executed from non-PowerShell shells on non-Windows platforms.
This also means that you can now do things like powershell foo.ps1 or powershell fooScript without specifying -File.
However, this change now requires that you explicitly specify -c or -Command when trying to do things like powershell.exe Get-Command.
(#4019)ClrVersion property from $PSVersionTable.
(This property is largely irrelevant for .NET Core,
and was only preserved in .NET Core for specific legacy purposes that are inapplicable to PowerShell.)
(#4027)$PSModulePath.
(E.g. $env:PSModulePath += ';C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules')
Even if the module isn't owned by the PowerShell Team, please tell us what works and what doesn't by leaving a comment in issue #4062! (#3981)$p = Get-Process
$p | Foreach-Object Prio<tab>
GitCommitId to PowerShell Core banner.
Now you don't have to run $PSVersionTable as soon as you start PowerShell to get the version! (#3916) (Thanks to @iSazonov!)native.exe --<tab> call into native completer. (#3633) (Thanks to @powercode!)NoEcho on Unix platforms. (#3801)Send-MailMessage in PowerShell Core. (#3869)Get-Help to support case insensitive pattern matching on Unix platforms. (#3852)Get-Help for about_* topics. (#4014)Import-Module to honour ScriptsToProcess when -Version is specified. (#3897)Start-Sleep: add the alias ms to the parameter -Milliseconds. (#4039) (Thanks to @Tadas!)Add-Type to support CSharpVersion7. (#3933) (Thanks to @iSazonov)&) (#3360)& at the end of a pipeline will cause the pipeline to be run as a PowerShell job.*-Job cmdlets can be used to manage the job.Copy-Item $foo $bar & just works.SemanticVersion instance and a Version instance that is constructed only with Major and Minor version values.
This will fix some cases where PowerShell Core was failing to import older Windows PowerShell modules. (#3793) (Thanks to @mklement0!)Invoke-WebRequest, when the response includes a Link header we create a RelationLink property as a Dictionary representing the URLs and rel attributes and ensure the URLs are absolute to make it easier for the developer to use.Invoke-RestMethod, when the response includes a Link header we expose a -FollowRelLink switch to automatically follow next rel links until they no longer exist or once we hit the optional -MaximumFollowRelLink parameter value.Get-ChildItem to be more in line with the way that the *nix ls -R and the Windows DIR /S native commands handle symbolic links to directories during a recursive search.
Now, Get-ChildItem returns the symbolic links it encountered during the search, but it won't search the directories those links target. (#3780)Get-ChildItem to continue enumeration after throwing an error in the middle of a set of items.
This fixes some issues where inaccessible directories or files would halt execution of Get-ChildItem. (#3806)ConvertFrom-Json to deserialize an array of strings from the pipeline that together construct a complete JSON string.
This fixes some cases where newlines would break JSON parsing. (#3823)Get-TimeZone for macOS/Linux. (#3735)Invoke-Item to accept a file path that includes spaces on macOS/Linux. (#3850)PowerShell Core has moved to using .NET Core 2.0 so that we can leverage all the benefits of .NET Standard 2.0. (#3556) To learn more about .NET Standard 2.0, there's some great starter content on Youtube and on the .NET blog. We'll also have more content soon in our repository documentation (which will eventually make its way to official documentation). In a nutshell, .NET Standard 2.0 allows us to have universal, portable modules between Windows PowerShell (which uses the full .NET Framework) and PowerShell Core (which uses .NET Core). Many modules and cmdlets that didn't work in the past may now work on .NET Core, so import your favorite modules and tell us what does and doesn't work in our GitHub Issues!
$PSVersionTable.OSDescription)$PSVersionTable.GitCommitId)If you want to opt-out of this telemetry, simply delete $PSHome\DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY.
Even before the first run of Powershell, deleting this file will bypass all telemetry.
In the future, we plan on also enabling a configuration value for whatever is approved as part of RFC0015.
We also plan on exposing this telemetry data (as well as whatever insights we leverage from the telemetry) in our community dashboard.
If you have any questions or comments about our telemetry, please file an issue.
ls *.txt).$PSHome instead of the Windows PowerShell base directory. (#3528)
OS entry to $PSVersionTable. (#3654)$PSVersionTable entries in the following way: (#3562) (Thanks to @iSazonov!)
PSVersionPSEdition-i switch to indicate an interactive shell. (#3558)
SemanticVersion constructors to not require 'minor' and 'patch' portions of a semantic version name. (#3696)IntPtr(-1) for INVALID_HANDLE_VALUE instead of IntPtr.Zero. (#3544) (Thanks to @0xfeeddeadbeef)Import-Module to avoid incorrect cyclic dependency detection. (#3594)New-ModuleManifest to correctly check if a URI string is well formed. (#3631)New-Item to allow creating symbolic links to file/directory targets and even a non-existent target. (#3509)Remove-Item on a symbolic link to only removing the link itself. (#3637)New-Item fails to create a symbolic link because the specified link path points to an existing item. (#3703)Get-ChildItem to list the content of a link to a directory on Unix platforms. (#3697)Rename-Item to allow Unix globbing patterns in paths. (#3661)-Property of Select-Object. (#3625) (Thanks to @powercode)@{<tab> to avoid crash in PSReadline. (#3626) (Thanks to @powercode)<id> - <name> as ToolTip and ListItemText when tab completing process ID. (#3664) (Thanks to @powercode)-Port parameter to New-PSSession to create PowerShell SSH remote sessions on non-standard (non-22) ports. (#3499) (Thanks to @Lee303)ValidRootDrives to ValidateDriveAttribute to make it easy to discover the attribute state via ParameterMetadata or PSVariable objects. (#3510) (Thanks to @indented-automation!)ValidateCountAttribute. (#3656) (Thanks to @iSazonov)ValidatePatternAttribute, ValidateSetAttribute and ValidateScriptAttribute to allow users to more easily specify customized error messages. (#2728) (Thanks to @powercode)We made a number of fixes to the progress bar rendering and the ProgressRecord object that improved cmdlet performance and fixed some rendering bugs on non-Windows platforms.
ProgressRecord in Web Cmdlets to reduce the GC overhead. (#3411) (Thanks to @iSazonov!)ShellExecute with Start-Process, Invoke-Item, and Get-Help -Online so that those cmdlets use standard shell associations to open a file/URI.
This means you Get-Help -Online will always use your default browser, and Start-Process/Invoke-Item can open any file or path with a handler.
(Note: there are still some problems with STA threads.) (#3281, partially fixes #2969)-Extension and -LeafBase switches to Split-Path so that you can split paths between the filename extension and the rest of the filename. (#2721) (Thanks to @powercode!)Format-Hex in C# along with some behavioral changes to multiple parameters and the pipeline. (#3320) (Thanks to @MiaRomero!)-NoProxy to web cmdlets so that they ignore the system-wide proxy setting. (#3447) (Thanks to @TheFlyingCorpse!)Out-Default -Transcript to properly revert out of the TranscribeOnly state, so that further output can be displayed on Console. (#3436) (Thanks to @PetSerAl!)Get-Help to not return multiple instances of the same help file. (#3410)-ExcludeProperty and -ExpandProperty of Select-Object. (#3443) (Thanks to @iSazonov!)Import-Module -n<tab> from working. (#1345)-ExecutionPolicy switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (#3481)PSModulePath environment variable. (#3255)Get-Help in a JEA session. (#2988)Invoke-Command -ComputerName. (#3015)ConvertTo-Json output. (#2787) (Thanks to @kittholland!)*-CmsMessage and Get-PfxCertificate cmdlets to Powershell Core. (#3224)powershell -version now returns version information for PowerShell Core. (#3115)-TimeOut parameter to Test-Connection. (#2492)ShouldProcess support to New-FileCatalog and Test-FileCatalog (fixes -WhatIf and -Confirm). (#3074) (Thanks to @iSazonov!)Test-ModuleManifest to normalize paths correctly before validating.
Publish-Module on non-Windows platforms. (#3097)AliasProperty "Count" defined for System.Array.
Count property on some ConvertFrom-Json output. (#3231) (Thanks to @PetSerAl!)Import-PowerShellDatafile from PowerShell script to C#. (#2750) (Thanks to @powercode!)-CustomMethod parameter to web cmdlets to allow for non-standard method verbs. (#3142) (Thanks to @Lee303!)CodeProperty "Parent" to System.Diagnostics.Process. (#2850) (Thanks to @powercode!)InitialSessionState object to create another Runspace. (#3141)PSModuleInfo.CaptureLocals to not do ValidateAttribute check when capturing existing variables from the caller's scope. (#3149)BiosSerialNumber for Get-ComputerInfo. (#3167) (Thanks to @iSazonov!)WindowsUBR property to Get-ComputerInfo resultPath to the -FilePath parameter of Out-File-InFile parameter of Invoke-WebRequestAdd-Type by crossgen'ing its dependency assembliesGet-FileHash from script to C# implementationGet-ComputerInfo locallyRoleCapabilityFiles keyword for JEA support on Windowsusing modulePlatformNotSupported on IoT for Get/Import/Export-Counter-Group parameter to Get-VerbGet-Process `eInvoke-RestMethod improvements for non-XML non-JSON inputAdd ValidateNotNullOrEmpty to approximately 15 parametersNew-TemporaryFile and New-Guid rewritten in C#Split-Path now works with UNC rootsInvoke-Command parameters when using SSH remoting transportInvoke-WebRequest with non-text responses on non-Windows platformsWrite-Progress performance improvement from alpha13 reverted because it introduced crash with a race conditionNullReferenceException in binder after turning on constrained language modeInvoke-WebRequest and Invoke-RestMethod to not validate the HTTPS certificate of the server if required.-Top and -Bottom to Sort-Object for Top/Bottom N sortUpdate-Help and Save-Help on Unix platformsSystem.Diagnostics.Process to not show the Handles columnWrite-Progress performance by adding timer to update a progress pane every 100 msGet-Uptime to Microsoft.PowerShell.UtilityOut-Null as fast as > $nullWrite-Host fast by delay initializing some properties in InformationRecord/ rooted drive on Unix platformsping | grep doesn't blockWrite-Information accept objects from pipelineImport-CsvReflectionTypeLoadException in type name auto-completionGet-ChildItem -Recurse -ErrorAction Ignore to ignore additional errorsSelect-Object with -ExcludeProperty now implies -Property * if -Property is not specified.-Name parameter of Get-AliasSet-Content failure to create a file in PSDrive under certain conditions.-Name parameter of Get-ServiceGet-WinEvent -FilterHashtableGet-ComputerInfoGet-WinEvent to use StringBuilder for XPath query construction~/.config/PowerShell capitalization bug fixed/etc/shells on installationInstall-Module version comparison bugGet-Help content addedGet-Help null reference exception fixed$env: fixed for case-sensitive variablescd with no arguments now behaves as cd ~ConvertFrom-Json fixed for multiple linesWrite-Host with unknown hostname bug fixedpowershell man-page added to packageGet-PSDrive ported to report free space~/.config/powershell/profile.ps1~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt~/.local/share/powershell/Modules~/.powershell folder is deprecated and should be deleted.ps1 extensionTrace-Command and associated source cmdlets are now availableCtrl-C now breaks running cmdlets correctlySet-PSBreakPoint debugging works on Linux, but not on WindowsGet-Help -Online worksmore function respects the Linux $PAGER; defaults to lessIsWindows, IsLinux, IsOSX, IsCore built-in PowerShell variables addedMicrosoft.PowerShell.Platform removed for the aboveCoreConsoleHost--command scriptsMicrosoft.PowerShellCoreNew-Item -ItemType SymbolicLink supports arbitrary targetsCtrl-R provides incremental reverse history search$Host.UI.RawUI now supportedCtrl-K and Ctrl-Y for kill and yank implementedCtrl-L to clear screen now worksSystem.Console PSReadline is fully functionalMicrosoft.PowerShell.Platform module is availableNew-Item supports symbolic and hard linksAdd-Type now worksrs1_srv_ps