Wat is er nieuw in PowerShell 7.4?
PowerShell 7.4 bevat de volgende functies, updates en belangrijke wijzigingen. PowerShell 7.4 is gebouwd op .NET 8.0.0.
Zie changeLOG in de GitHub-opslagplaats voor een volledige lijst met wijzigingen.
Wijzigingen die fouten veroorzaken
- Docker-installatiekopieën van Nano Server zijn niet beschikbaar voor deze release
- De parameter ProgressAction toegevoegd aan de algemene parameters
- Werk enkele PowerShell-API's bij om ArgumentException te genereren in plaats van ArgumentNullException wanneer het argument een lege tekenreeks is (#19215) (Bedankt@xtqqczze!)
- Code verwijderen die betrekking heeft op
#requires -pssnapin
(#19320) Test-Json
gebruikt nu JsonSchema.NET in plaats van Newtonsoft.Json.Schema.- Met deze wijziging
Test-Json
worden de oudere Draft 4-schema's niet meer ondersteund. (#18141) (Bedankt@gregsdennis!). Zie de documentatie voor JSON-schema's voor meer informatie over JSON-schema's. Dit wordt ook verbrokenTest-Json
voor JSON- en JSONC-bestanden met opmerkingen. ConvertFrom-Json
ondersteuning maakt nog steeds gebruik van Newtonsoft.Json.Schema, zodat JSON-bestanden met opmerkingen kunnen worden geconverteerd.
- Met deze wijziging
- Uitvoer van
Test-Connection
nu bevat meer gedetailleerde informatie over TCP-verbindingstests - .NET heeft wijzigingen geïntroduceerd die van invloed zijn op
Test-Connection
. De cmdlet retourneert nu een fout over de noodzaak om te gebruikensudo
op Linux-platforms bij gebruik van een aangepaste buffergrootte (#20369) - Experimentele functie PSNativeCommandPreserveBytePipe is nu mainstream. PowerShell behoudt nu de bytestreamgegevens bij het omleiden van de stdout-stroom van een systeemeigen opdracht naar een bestand of bij het doorsturen van bytestreamgegevens naar de stdin-stroom van een systeemeigen opdracht.
- Wijzigen hoe relatieve paden
Resolve-Path
worden verwerkt wanneer u de parameter RelativeBasePath (#19755) gebruikt (bedankt)@MartinGC94!) - Ongebruikte PSv2-code verwijderen - TabExpansion-functie (#18337) verwijderen
Installatieprogramma-updates
Het Windows MSI-pakket biedt nu een optie om PowerShell-telemetrie uit te schakelen tijdens de installatie. Zie Het MSI-pakket installeren vanaf de opdrachtregel voor meer informatie.
Bijgewerkte versies van PSResourceGet en PSReadLine
PowerShell 7.4 bevat Microsoft.PowerShell.PSResourceGet v1.0.1. Deze module wordt naast PowerShellGet v2.2.5 en PackageManagement v1.4.8.1 naast PowerShellGet geïnstalleerd. Zie de documentatie voor Microsoft.PowerShell.PSResourceGet voor meer informatie.
PowerShell 7.4 bevat nu PSReadLine v2.3.4. Zie de documentatie voor PSReadLine voor meer informatie.
Verbeteringen aan tabvoltooiing
Veel dank aan @MartinGC94 en anderen voor al hun werk om de voltooiing van tabbladen te verbeteren.
- Probleem opgelost bij het voltooien van de eerste opdracht in een script met een lege matrixexpressie (#18355)
- Voltooiing van positionele argumenten corrigeren (#17796)
- Prioriteit geven aan de standaardparameterset bij het voltooien van positionele argumenten (#18755)
- Pseudobinding verbeteren voor dynamische parameters (#18030)
- Typedeductie van hashtabelsleutels verbeteren (#17907)
- Typedeductiefout opgelost voor lege retourinstructies (#18351)
- Typedeductie verbeteren voor Get-Random (#18972)
- Typedeductie corrigeren voor alle bereikvariabelen (#18758)
- Opsomming van uitgestelde typen in pijplijn verbeteren (#17799)
- Voltooiing toevoegen voor waarden in vergelijkingen bij het vergelijken van Enums (#17654)
- Voltooiing van eigenschapstoewijzing toevoegen voor opsommingen (#19178)
- Voltooiing opgelost voor variabele eigenschappen van PSCustomObject (#18682)
- Voltooiing van lid herstellen in kenmerkargument (#17902)
- Redundante parameteraliassen uitsluiten van voltooiingsresultaten (#19382)
- Voltooiing van klasselid corrigeren voor klassen met basistypen (#19179)
- Voltooiing toevoegen voor het gebruik van trefwoorden (#16514)
- Los het lek van de TabExpansion2-variabele op bij het voltooien van variabelen (#18763)
- Het voltooien van variabelen in ScriptBlock-bereiken inschakelen (#19819)
- Oplossing voor voltooiing van de foreach-instructievariabele (#19814)
- Prioriteit van variabele type deductie corrigeren (#18691)
- Voltooiing van leden voor PowerShell Enum-klasse corrigeren (#19740)
- Parseren van letterlijke matrixen in indexexpressies in methode-aanroepen (#19224) corrigeren
- Padvoltooiing verbeteren (#19489)
- Een indexering buiten de afhankelijke fout in CompleteInput herstellen voor lege scriptinvoer (#19501)
- Prestaties van variabele voltooiing verbeteren (#19595)
- De voltooiing van hashtabelsleutels verbeteren voor type beperkte variabeletoewijzingen, geneste hashtabellen en meer (#17660)
- Externe toepassingsuitvoer afleiden als tekenreeksen (#19193)
- Voltooiing van parameter bijwerken voor opsommingen om waarden uit te sluiten die niet zijn toegestaan door
ValidateRange
kenmerken (#17750) (Bedankt @fflaten!). - Dynamische parametervoltooiing oplossen (#19510)
- Voltooiing toevoegen voor variabelen die zijn toegewezen door de gegevensinstructie (#19831)
- Oplossing voor het uitbreiden van tilde (
~
) op Windows-systemen om$home
te voorkomen dat gebruiksvoorbeelden worden onderbroken met systeemeigen opdrachten (#21529)
Verbeteringen aan web-cmdlets
Veel dankzij @CarloToso en anderen voor al het werk aan het verbeteren van web-cmdlets.
- Oplossing voor decompressie in web-cmdlets om Brotli (#17955) op te nemen (Bedankt) @iSazonov!)
- Webcmdlets voegen 308 toe aan omleidingscodes en kleine opschoning (#18536)
- Voltooi de voortgangsbalkweergave in Invoke-WebRequest wanneer het downloaden is voltooid of geannuleerd (#18130)
- Web-cmdlets get Retry-After interval from response headers if the status code is 429 (#18717)
- Web-cmdlets stellen standaard tekensetcodering in op UTF8 (#18219)
- WebSession.MaximumRedirection behouden op basis van wijzigingen (#19190)
- WebCmdlets parseren XML-declaratie om de coderingswaarde op te halen, indien aanwezig. (#18748)
- Fix using xml -Body in webcmdlets without an encoding (#19281)
- Gedrag van PUT-methode aanpassen aan POST één voor standaardinhoudstype in WebCmdlets (#19152)
- Neem rekening met ContentType van headers in WebCmdlets (#19227)
- Toestaan om de oorspronkelijke HTTP-methode te behouden door -PreserveHttpMethodOnRedirect toe te voegen aan web-cmdlets (#18894)
- Webcmdlets geven een fout weer op https naar http-omleiding (#18595)
- AllowInsecureRedirect-switch toevoegen aan web-cmdlets (#18546)
- Uitgebreid bericht in web-cmdlets verbeteren wanneer inhoudslengte onbekend is (#19252)
- Bouw de relatieve URI voor koppelingen uit het antwoord in
Invoke-WebRequest
(#19092) - Omleiding voor
-CustomMethod POST
in WebCmdlets oplossen (#19111) - Het vorige antwoord verwijderen in Webcmdlets (#19117)
- Xml- en json-foutenindeling verbeteren
Invoke-WebRequest
(#18837) - De parameters ValidateNotNullOrEmpty toevoegen aan OutFile en InFile van WebCmdlets (#19044)
- Lijst met headers bijwerken httpKnownHeaderNames (#18947)
Invoke-RestMethod -FollowRelLink
koppelingen met komma's herstellen (#18829)- Fout opgelost met het beheren van omleiding en KeepAuthorization in web-cmdlets (#18902)
- StatusCode toevoegen aan HttpResponseException (#18842)
- Ondersteuning voor permanente HTTP-verbindingen in web-cmdlets (#19249) (bedankt@stevenebutler!)
- Klein opschonen
Invoke-RestMethod
(#19490) - Het uitgebreide bericht van WebCmdlets verbeteren om de juiste HTTP-versie weer te geven (#19616)
- FileNameStar toevoegen aan MultipartFileContent in WebCmdlets (#19467)
- Corrigeer de HTTP-status van 409 tot 429 voor WebCmdlets om een interval voor opnieuw proberen op te halen van de header Opnieuw proberen na. (#19622) (Bedankt@mkht!)
- Wijzigen
-TimeoutSec
in-ConnectionTimeoutSeconds
en toevoegen-OperationTimeoutSeconds
aan web-cmdlets (#19558) (Thanks @stevenebutler!) Other cmdlets - Ondersteuning voor Ctrl+c wanneer de verbinding vastloopt tijdens het lezen van gegevens in WebCmdlets (#19330) (bedankt)@stevenebutler!)
- Ondersteuning voor Unix-domeinsocket in WebCmdlets (#19343)
Andere cmdlet-verbeteringen
Test-Connection
retourneert nu een fout over de noodzaak om te gebruikensudo
op Linux-platforms bij het gebruik van een aangepaste buffergrootte (#20369)- Uitvoertypen toevoegen aan format-opdrachten (#18746) (Bedankt@MartinGC94!)
- Kenmerken van het uitvoertype toevoegen voor
Get-WinEvent
(#17948) (Bedankt @MartinGC94!) - Path- en LiteralPath-parameters toevoegen aan
Test-Json
cmdlet (#19042) (Bedankt@ArmaanMcleod!) - Parameter NoHeader toevoegen aan
ConvertTo-Csv
enExport-Csv
cmdlets (#19108) (Bedankt@ArmaanMcleod!) - Bevestig en WhatIf-parameters toevoegen aan
Stop-Transcript
(#18731) (Bedankt@JohnLBevan!) - Parameter FuzzyMinimumDistance toevoegen aan
Get-Command
(#18261) - Zorg ervoor dat de coderingsparameter kan worden gebruikt
ANSI
in PowerShell (#19298) (bedankt)@CarloToso!) - Voortgang toevoegen aan
Copy-Item
(#18735) Update-Help
rapporteert nu een fout bij het gebruik van impliciete cultuur op niet-Amerikaanse systemen. (#17780) (Bedankt@dkaszews!)- Vereisen geen activiteit bij het maken van een voltooide voortgangsrecord (#18474) (Bedankt) @MartinGC94!)
- Geen negatieve waarden voor
Get-Content
cmdlet-parameters-Head
en-Tail
(#19715) (Bedankt) @CarloToso!) - Maak
Update-Help
een juiste fout wanneer de huidige cultuur niet is gekoppeld aan een taal (#19765) (Bedankt) @josea!) - Combinatie van
-Skip
en-SkipLast
parameters inSelect-Object
cmdlet toestaan. (#18849) (Bedankt@ArmaanMcleod!) - Cmdlet toevoegen
Get-SecureRandom
(#19587) Set-Clipboard -AsOSC52
voor extern gebruik (#18222) (bedankt @dkaszews!)Resolve-Path
De relatieve padresolutie versnellen (#19171) (Bedankt@MartinGC94!)- De schakelparameter
-CaseInsensitive
toegevoegd aanSelect-Object
enGet-Unique
cmdlets (#19683) (Bedankt @ArmaanMcleod!) Restart-Computer
enStop-Computer
moet mislukken met een fout wanneer deze niet wordt uitgevoerd via sudo op Unix (#19824)
Engineverbeteringen
Updates voor $PSStyle
- Hiermee worden dim- en DimOff-eigenschappen toegevoegd (#18653)
- Statische methoden toegevoegd aan de PSStyle-klasse waarmee consolecolor-waarden op de voorgrond en achtergrond worden toegewezen aan ANSI-escapereeksen (#17938)
- Tabelkoppen voor berekende velden worden standaard cursief opgemaakt
- Ondersteuning toevoegen voor respect
$PSStyle.OutputRendering
voor de externe host (#19601) - Bijgewerkte telemetriegegevens voor het gebruik van
CrescendoBuilt
modules (#20371)
Andere engine-updates
- PowerShell-klasse niet koppelen aan Runspace bij het declareren van het
NoRunspaceAffinity
kenmerk (#18138) - Voeg het
ValidateNotNullOrWhiteSpace
kenmerk toe (#17191) (Bedankt @wmentha!) - Toevoegen
sqlcmd
aan de lijst voor het doorgeven van verouderde argumenten (#18559) - Voeg de functie
cd~
toe (#18308) (Bedankt @GigaScratch!) - Parseren van matrixtypen in algemene typen oplossen (#19205) (Bedankt @MartinGC94!)
- Jokertekens oplossen in hoofdmap van apparaatpaden (#19442) (Bedankt @MartinGC94!)
- Een openbare API toevoegen voor het verkrijgen van locaties van PSModulePath-elementen (#19422)
- Corrigeer onjuiste tekenreeks voor typeconversie (#19560) (Bedankt @MartinGC94!)
- Trage uitvoering herstellen wanneer veel onderbrekingspunten worden gebruikt (#14953) (Bedankt @nohwnd!)
- Code verwijderen die betrekking heeft op
#requires -pssnapin
(#19320)
Experimentele functies
PowerShell 7.4 introduceert de volgende experimentele functies:
- PSFeedbackProvider : vervangt het in code vastgelegde suggestieframework door een uitbreidbare feedbackprovider.
- Met deze functie worden ook de eigenschappen FeedbackName, FeedbackText en FeedbackAction toegevoegd waarmee
$PSStyle.Formatting
u de opmaak van feedbackberichten kunt wijzigen.
- Met deze functie worden ook de eigenschappen FeedbackName, FeedbackText en FeedbackAction toegevoegd waarmee
- PSModuleAutoLoadSkipOfflineFiles - Moduledetectie slaat nu bestanden over die zijn gemarkeerd door cloudproviders als niet volledig op schijf.
- PSCommandWithArgs - Ondersteuning toevoegen voor het doorgeven van argumenten aan opdrachten als één tekenreeks
De volgende experimentele functies zijn mainstream geworden:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 heeft de volgende experimentele functies gewijzigd:
- PSCommandNotFoundSuggestion - Deze functie maakt nu gebruik van een uitbreidbare feedbackprovider in plaats van in code vastgelegde suggesties (#18726)
Zie Experimentele functies gebruiken voor meer informatie over de experimentele functies.