A new preview version of Windows PowerShell is released with a huge number of bug fixes for Performance, General Cmdlet, Code Cleanup, and Build and Packaging. This is PowerShell 7.4.0 Preview.1 for which Snap packages and Nano server docker images are not available.
See – Windows PowerShell 7.31 and 7.2.8 are available to download. Let’s see what’s new in this version –
Table of Contents
Windows PowerShell 7.4.0 Preview.1 Rolled out
Here is the changelog –
Note
- Snap packages are not available for this release.
- Nano server docker images are not available for this release.
Engine Updates and Fixes
- Add Instrumentation to AmsiUtil and create the init variable readonly (#18727)
- Fix typo in OutOfProcTransportManager.cs (#18766) (Thanks @eltociear!)
- Allow non-default encodings to be used in user’s script/code (#18605)
- Add Dim and DimOff to $PSStyle (#18653)
- Change exec from alias to function to handle arbitrary arguments (#18567)
- The command prefix should also be in the error color for NormalView (#18555)
- Windows PowerShell 7.4.0 Preview.1 Skips cloud files named as not on disk during command discovery (#18152)
- Replace UTF8Encoding(false) with Encoding.Default (#18356) (Thanks @xtqqczze!)
- Solve Switch-Process to set termios appropriate for child process (#18467)
- On Unix, only explicitly terminate the native process if not in background (#18215)
- Treat [NullString]::Value as the string type when resolving methods (#18080)
- Improve pseudo binding for dynamic parameters (#18030) (Thanks @MartinGC94!)
- Bring experimental feature PSAnsiRenderingFileInfo stable (#18042)
- Update to use version 2.21.0 of Application Insights. (#17903)
- Do not preserve temporary results when no need to do so (#17856)
Performance
- Remove some static constants from Utils. Separators (#18154) (Thanks @iSazonov!)
- Avoid using regex when unnecessary in ScriptWriter (#18348)
- Use source generator for PSVersionInfo to improve startup time (#15603) (Thanks @iSazonov!)
- Skip evaluating suggestions at startup (#18232)
- Avoid using Regex when not necessary (#18210)
General Cmdlet Updates and Fixes
- Modify to use ComputeCore.dll for PowerShell Direct (#18194)
- Replace ArgumentNullException(nameof()) with ArgumentNullException.ThrowIfNull() (#18792)(#18784) (Thanks @CarloToso!)
- Remove TabExpansion from remote session configuration (#18795) (Internal 23331)
- WebCmdlets get Retry-After from headers if status code is 429 (#18717) (Thanks @CarloToso!)
- Implement SupportsShouldProcess in Stop-Transcript (#18731) (Thanks @JohnLBevan!)
- Fix New-Item -ItemType Hardlink to resolve target to absolute path and not allow link to itself (#18634)
- Add output types to Format commands (#18746) (Thanks @MartinGC94!)
- Fix the process CommandLine on Linux (#18710) (Thanks @jborean93!)
- Fix SuspiciousContentChecker.Match to detect a pre-defined string when the text starts with it (#18693)
- Switch $PSNativeCommandUseErrorActionPreference to $true when feature is enabled (#18695)
- Fix Start-Job to check the existence of working directory using the PowerShell way (#18675)
- Webcmdlets add 308 to redirect codes and small cleanup (#18536) (Thanks @CarloToso!)
- Ensure HelpInfo.Category is consistently a string (#18254)
- Remove gcloud from the legacy list because it’s resolved to a .ps1 script (#18575)
- Add gcloud and sqlcmd to list to use legacy argument passing (#18559)
- Fix native access violation (#18545) (#18547) (Thanks @chrullrich!)
- Fix issue when completing the first command in a script with an empty array expression (#18355) (Thanks @MartinGC94!)
- Improve type inference of hashtable keys (#17907) (Thanks @MartinGC94!)
- Fix Switch-Process to copy the current env to the new process (#18452)
- Fix Switch-Process error to include the command that is not found (#18443)
- Update Out-Printer to remove all decorating ANSI escape sequences from PowerShell formatting (#18425)
- Web cmdlets set default charset encoding to UTF8 (#18219) (Thanks @CarloToso!)
- Fix incorrect cmdlet name in the script used by Restart-Computer (#18374) (Thanks @urizen-source!)
- Add the function cd~ (#18308) (Thanks @GigaScratch!)
- Fix type inference error for empty return statements (#18351) (Thanks @MartinGC94!)
- Fix the exception reporting in ConvertFrom-StringData (#18336) (Thanks @GigaScratch!)
- Implement IDisposable in NamedPipeClient (#18341) (Thanks @xtqqczze!)
- Substitute command-error suggestion with a new implementation based on subsystem plugin (#18252)
- Remove the ProcessorArchitecture portion from the full name as it’s obsolete (#18320)
- Make the fuzzy searching flexible by passing in the fuzzy matcher (#18270)
- Add -FuzzyMinimumDistance parameter to Get-Command (#18261)
- Improve startup time by triggering initialization of additional types on background thread (#18195)
- Fix decompression in web cmdlets (#17955) (Thanks @iSazonov!)
- Add CustomTableHeaderLabel formatting to differentiate table header labels that are not property names (#17346)
- Remove the extra new line form List formatting (#18185)
- Minor update to the FileInfo table formatting on Unix to make it more concise (#18183)
- Windows PowerShell 7.4.0 Preview.1 fixs Parent property on processes with complex name (#17545) (Thanks @jborean93!)
- Make the PowerShell class not affiliate with Runspace when declaring the NoRunspaceAffinity attribute (#18138)
- Complete the progress bar rendering in Invoke-WebRequest when downloading is complete or cancelled (#18130)
- Display download progress in human readable format for Invoke-WebRequest (#14611) (Thanks @bergmeister!)
- Update WriteConsole to not use stackalloc for buffer with too large size (#18084)
- Filter out compiler generated types for Add-Type -PassThru (#18095)
- Fixing CA2014 warnings and removing the warning suppression (#17982) (Thanks @creative-cloud!)
- Windows PowerShell 7.4.0 Preview.1 makes experimental feature PSNativeCommandArgumentPassing stable (#18044)
- Make experimental feature PSAMSIMethodInvocationLogging stable (#18041)
- Handle PSObject argument specially in method invocation logging (#18060)
- Fix typos in EventResource.resx (#18063) (Thanks @eltociear!)
- Make experimental feature PSRemotingSSHTransportErrorHandling stable (#18046)
- Make experimental feature PSExec stable (#18045)
- Make experimental feature PSCleanBlock stable (#18043)
- Fix error formatting to use color defined in $PSStyle.Formatting (#17987)
- Remove unneeded use of chmod 777 (#17974)
- Support mapping foreground/background ConsoleColor values to VT escape sequences (#17938)
- Make pwsh server modes implicitly not show banner (#17921)
- Add output type attributes for Get-WinEvent (#17948) (Thanks @MartinGC94!)
- PowerShell v7.4.0-preview.1 removes 1 second minimum delay in Invoke-WebRequest for small files, and prevent file-download-error suppression. (#17896) (Thanks @AAATechGuy!)
- Add completion for values in comparisons when comparing Enums (#17654) (Thanks @MartinGC94!)
- Fix positional argument completion (#17796) (Thanks @MartinGC94!)
- Fix member completion in attribute argument (#17902) (Thanks @MartinGC94!)
- Throw when too many parameter sets are defined (#17881) (Thanks @fflaten!)
- Limit searching of charset attribute in meta tag for HTML to first 1024 characters in webcmdlets (#17813)
- Fix Update-Help failing silently with implicit non-US culture. (#17780) (Thanks @dkaszews!)
- Add the ValidateNotNullOrWhiteSpace attribute (#17191) (Thanks @wmentha!)
- Improve enumeration of inferred types in pipeline (#17799) (Thanks @MartinGC94!)
PowerShell v7.4.0-preview.1 Code Cleanup
We thank the following contributors!
@MartinGC94, @CarloToso, @iSazonov, @xtqqczze, @turbedi, @trossr32, @eltociear, @AtariDreams, @jborean93
Tools
- Add a function to get the PR Back-port report (#18299)
- Add a workaround in automatic rebase workflow to continue on error (#18176)
- Update list of PowerShell team members in release tools (#17909)
- Don’t block if we fail to create the comment (#17869)
Tests
- Add testexe.exe -echocmdline to output raw command line received by the process on Windows (#18591)
- Mark charset test as pending (#18511)
- Skip output rendering tests on Windows Server 2012 R2 (#18382)
- Increase timeout to make subsystem tests more reliable (#18380)
- Add missing -Tag ‘CI’ to describe blocks. (#18316)
- Use short path instead of multiple quotes in Get-Item test relying on node (#18250)
- Replace the CIM class used for -Amended parameter test (#17884) (Thanks @sethvs!)
- Stop ongoing progress-bar in Write-Progress test (#17880) (Thanks @fflaten!)
Build and Packaging Improvements
We thank the following contributors!
Documentation and Help Content
- Update readme and metadata for releases (#18780)(#18493)(#18393)(#18332)(#18128)(#17870)
- Remove ‘please’ and ‘Core’ from README.md per MS style guide (#18578) (Thanks @Rick-Anderson!)
- Change unsupported XML documentation tag (#18608)
- Change public API mention of monad to PowerShell (#18491)
- Update security reporting policy to recommend security portal for more streamlined reporting (#18437)
- Change log for v7.3.0 (#18505) (Internal 23161)
- Replace msh in public API comment based documentation with PowerShell equivalent (#18483)
- Add missing XML doc elements for methods in RunspaceFactory (#18450)
- Change log for v7.3.0-rc.1 (#18400)
- Update change logs for v7.2.7 and v7.0.13 (#18342)
- Update the change log for v7.3.0-preview.8 (#18136)
- Add the ConfigurationFile option to the PowerShell help content (#18093)
- Update help content about the PowerShell flag -NonInteractive (#17952)
SHA256 Hashes of the release artifacts
- hashes.sha256
- 2CC623DBD53546CBDF74C7667E127581DC0F4837570B7DF80C60BB612935D697
- powershell-7.4.0-preview.1-linux-alpine-x64.tar.gz
- 8BA796F6C6A6404ACA433371BCF0D96ADFE1992919A9A659E6180E8A10ED6B2C
- powershell-7.4.0-preview.1-linux-arm32.tar.gz
- 2E85535FC396139ABAF6D5C9037E01725AD3A34EDCBA6CBCC7F22241C050BECE
- powershell-7.4.0-preview.1-linux-arm64.tar.gz
- C947FF34AD633831B0AE2A30641E63797855D21A4E12CBCEE941AB65F9515973
- powershell-7.4.0-preview.1-linux-x64.tar.gz
- CEFE3952D2993E42F9EEE3E1A0AD5CF106FDBE0A821939F7695267218979D07B
- powershell-7.4.0-preview.1-linux-x64-fxdependent.tar.gz
- E2A6F444345B137BECD8669E7B970B11C2B520D2EE44E44860351F3CD748432E
- powershell-7.4.0-preview.1-osx-arm64.pkg
- 2CA714783D3AA39AE35DEFBAB48015BA921AD9D18A6841F72AB3BCFCA6606A9C
- powershell-7.4.0-preview.1-osx-arm64.tar.gz
- 6F68543868203D2C777BA3643B82CF95401E7BDE6CEF11CEEAAB8CFA430FB21A
- powershell-7.4.0-preview.1-osx-x64.pkg
- C1DF3CF5DB8FB2E1B69BE21170F1C373354F4BB88DF22D2021796D8DE0C58FE3
- powershell-7.4.0-preview.1-osx-x64.tar.gz
- 212084E9080DC7F9A2E3E21DFC1BAC792496D26AAF019990904D0AC18F48B354
- PowerShell-7.4.0-preview.1-win.msixbundle
- 5C8AF95E6E35129CF53513B35F10A0C453C1D5633C3AE5F1BEFFE4C9A1B14EFE
- PowerShell-7.4.0-preview.1-win-arm32.zip
- 9428CA176F0578F7EE2C291518E5107386A11D9785BB2131984702DD360FEECC
- PowerShell-7.4.0-preview.1-win-arm64.zip
- 02057D95D3FE4F728E00079916F1AAD208E40614CA520DBF64D84EFFBCD58207
- PowerShell-7.4.0-preview.1-win-fxdependent.zip
- A6B23D2BE0F33C6E1D5AAF64106F8DED81704E3B28D5E229AF831DC1E8F201B4
- PowerShell-7.4.0-preview.1-win-fxdependentWinDesktop.zip
- 6FFC4D4B7DA253212769AAA3EDF857B34D2386A10A9BDCEF017799DCA5504D49
- PowerShell-7.4.0-preview.1-win-x64.msi
- C525E9D5804489183BAFCC90FC195949727593FAA780CC30D1BC01CFEFE09D0D
- PowerShell-7.4.0-preview.1-win-x64.zip
- B0F6627D1A05D8833963487139EB667657429F78EAFCC90191CCD2D5347C8AF3
- PowerShell-7.4.0-preview.1-win-x86.msi
- 51EFBD58C6D7142A38D49D319EFA504DACE48B5681E98067CAFFBBF4151B84EE
- PowerShell-7.4.0-preview.1-win-x86.zip
- E7B8CB498993878327665337BD3B2102B059247CABA32FB7D07374CCDE953B43
- powershell-preview_7.4.0-preview.1-1.deb_amd64.deb
- 2518230120BDE23D124E8A8D30D560B14572A588AF57E441C4C24EA52CA79E2F
- powershell-preview-7.4.0_preview.1-1.cm.x86_64.rpm
- EF907D32124F25A40F01D57A8489C727BC13F65B3CBED8437121702D85B9401F
- powershell-preview-7.4.0_preview.1-1.rh.x86_64.rpm
- FDAE0EE7A1280E33C9178ED60E751B5532E1E14F4E6D081FB1108BC97CAAC916
Source: Github.
That’s all!!