Wat is er nieuw in PowerShell 7.4?
PowerShell 7.4.7 bevat de volgende functies, updates en belangrijke wijzigingen. PowerShell 7.4.7 is gebouwd op .NET 8.0.12.
Zie de CHANGELOG- in de GitHub-opslagplaats voor een volledige lijst met wijzigingen.
Belangrijke wijzigingen
- 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 ondersteunt
Test-Json
niet langer de oudere Concept 4-schema's. (#18141) (Bedankt @gregsdennis!). Zie de documentatie voor JSON-schema voor meer informatie over JSON-schema's. Hierdoor worden ookTest-Json
voor JSON- en JSONC-bestanden met opmerkingen verbroken. -
ConvertFrom-Json
ondersteuning maakt nog steeds gebruik van Newtonsoft.Json.Schema, zodat JSON-bestanden met opmerkingen kunnen worden geconverteerd.
- Met deze wijziging ondersteunt
- Uitvoer van
Test-Connection
bevat nu 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 omsudo
te gebruiken op Linux-platforms bij het gebruik van een aangepaste buffergrootte (#20369) - Experimentele functie PSNativeCommandPreserveBytePipe is nu algemeen gebruikt. 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 in
Resolve-Path
worden verwerkt bij het gebruik van de parameter RelativeBasePath (#19755) (bedankt @MartinGC94!) - Ongebruikte PSv2-code verwijderen - verwijdert TabExpansion-functie (#18337)
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 opdrachtregelvoor 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 geïnstalleerd. Zie de documentatie voor Microsoft.PowerShell.PSResourceGetvoor 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 herstellen (#17796)
- Prioriteit geven aan de standaardparameterset bij het voltooien van positionele argumenten (#18755)
- Pseudobinding verbeteren voor dynamische parameters (#18030)
- Typedeductie van hashtabelsleutels verbeteren (#17907)
- Type-inferentiefout opgelost voor lege returnstatements (#18351)
- Typedeductie voor Get-Random verbeteren (#18972)
- Typedeductie voor alle scope-variabelen corrigeren (#18758)
- Opsomming van afgeleide typen in pijplijn verbeteren (#17799)
- Voltooiing toevoegen voor waarden in vergelijkingen bij het vergelijken van Enums (#17654)
- Voeg voltooide eigenschapstoewijzing toe voor opsommingen (#19178)
- Los de voltooiing voor eigenschappen van PSCustomObject-variabelen op (#18682)
- Voltooiing van lid herstellen in kenmerkargument (#17902)
- Redundante parameteraliassen uitsluiten van voltooiingsresultaten (#19382)
- Voltooiing van klasselid herstellen 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)
- Herstel voltooiing van de variabele in de foreach-lus (#19814)
- Prioriteit van variabele type-inferentie herstellen (#18691)
- Herstel de lid-completie voor PowerShell Enum-klasse (#19740)
- Parseren van array-literalen in index-expressies in methodeoproepen corrigeren (#19224)
- Padvoltooiing verbeteren (#19489)
- Een fout in indexering buiten de grenzen in CompleteInput corrigeren voor lege scriptinvoer (#19501)
- Prestaties van voltooiing van variabelen verbeteren (#19595)
- De voltooiing van hashtabelsleutels verbeteren voor type beperkte variabeletoewijzingen, geneste hashtabellen en meer (#17660)
- De uitvoer van externe applicaties afleiden als tekenreeksen (#19193)
- Parameter voltooiing bijwerken voor opsommingen om waarden uit te sluiten die niet zijn toegestaan door
ValidateRange
attributen (#17750) (Bedankt @fflaten!)). - Dynamische parametervoltooiing herstellen (#19510)
- Voltooiing toevoegen voor variabelen die zijn toegewezen door de Data-opdracht (#19831)
- Los het probleem op van de uitbreidende tilde (
~
) op Windows-systemen naar$home
om te voorkomen dat gebruiksscenario's worden onderbroken bij het gebruik van systeemeigen opdrachten (#21529)
Verbeteringen aan web-cmdlets
Veel dankzij @CarloToso en anderen voor al het werk aan het verbeteren van web-cmdlets.
- Los het decompressieprobleem in webcmdlets op om Brotli op te nemen (#17955) (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 halen het Retry-After interval uit de antwoordheaders op wanneer de statuscode 429 is (#18717)
- Web-cmdlets stellen standaard tekensetcodering in op UTF8 (#18219)
- Behoud WebSession.MaximumRedirection tegen wijzigingen (#19190)
- WebCmdlets parseren XML-declaratie om de coderingswaarde op te halen, indien aanwezig. (#18748)
- Herstel met behulp van xml -Body in webcmdlets zonder een codering (#19281)
- Pas het gedrag van de PUT-methode aan op POST 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 vertonen een fout bij een https-naar-http-omleiding (#18595)
- Add AllowInsecureRedirect switch to Web cmdlets (#18546)
- Verbeter het uitgebreide bericht in webcmdlets wanneer de 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)
- De indeling voor
Invoke-WebRequest
xml- en json-fouten verbeteren (#18837) - ValidNotNullOrEmpty toevoegen aan OutFile- en Parameters inFile van WebCmdlets (#19044)
- Werk de lijst met headers HttpKnownHeaderNames bij (#18947)
-
Invoke-RestMethod -FollowRelLink
koppelingen met komma's herstellen (#18829) - Fout opgelost bij het beheren van redirecties en KeepAuthorization in web-cmdlets (#18902)
- Voeg StatusCode- toe aan HttpResponseException (#18842)
- Ondersteuning voor permanente HTTP-verbindingen in web-cmdlets (#19249) (Bedankt @stevenebutler!)
- Kleine opschoning
Invoke-RestMethod
(#19490) - Het uitgebreide bericht van WebCmdlets verbeteren om de juiste HTTP-versie weer te geven (#19616)
- Voeg FileNameStar- toe aan MultipartFileContent in WebCmdlets (#19467)
- Corrigeer de HTTP-status van 409 naar 429 voor WebCmdlets om het herhalingsinterval van de Retry-After-header op te halen. (#19622) (Bedankt @mkht!)
- Wijzig
-TimeoutSec
in-ConnectionTimeoutSeconds
en voeg-OperationTimeoutSeconds
toe aan web-cmdlets (#19558) (Bedankt @stevenebutler!) Andere 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 omsudo
te gebruiken op Linux-platforms bij gebruik van een aangepaste buffergrootte (#20369) - Uitvoertypen toevoegen aan formatteeropdrachten (#18746) (Bedankt @MartinGC94!))
- Kenmerken van het uitvoertype toevoegen voor
Get-WinEvent
(#17948) (Bedankt @MartinGC94!) - Voeg de parameters Path en LiteralPath toe aan de
Test-Json
-cmdlet (#19042) (Bedankt @ArmaanMcleod!)) - Voeg de parameter NoHeader toe aan
ConvertTo-Csv
enExport-Csv
cmdlets (#19108) (bedankt @ArmaanMcleod!) - Voeg de parameters Confirm en WhatIf toe aan
Stop-Transcript
(#18731) (Bedankt @JohnLBevan!)) - Voeg parameter FuzzyMinimumDistance toe aan
Get-Command
(#18261) - Zorg ervoor dat parameter coderen kan worden gebruikt voor
ANSI
codering 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!) - Vereist geen activiteit bij het maken van een voltooide voortgangsrecord (#18474) (Bedankt @MartinGC94!)
- Sta geen negatieve waarden toe voor
Get-Content
cmdlet-parameters-Head
en-Tail
(#19715) (Bedankt @CarloToso!) - Laat
Update-Help
een juiste foutmelding geven wanneer de huidige cultuur niet is gekoppeld aan een taal (#19765) (Bedankt @josea!)) - Het combineren van
-Skip
en-SkipLast
parameters inSelect-Object
cmdlet toestaan. (#18849) (Bedankt @ArmaanMcleod!) - Cmdlet
Get-SecureRandom
toevoegen (#19587) -
Set-Clipboard -AsOSC52
voor extern gebruik (#18222) (Bedankt @dkaszews!) - Versnel
Resolve-Path
relatieve padoplossing (#19171) (Bedankt @MartinGC94!)) - De schakelparameter
-CaseInsensitive
toegevoegd aanSelect-Object
enGet-Unique
cmdlets (#19683) (Bedankt @ArmaanMcleod!) -
Restart-Computer
enStop-Computer
moeten met een fout mislukken wanneer ze niet worden uitgevoerd via sudo op Unix (#19824)
Engineverbeteringen
Updates voor $PSStyle
- Voegt eigenschappen Dim en DimOff toe (#18653)
- Statische methoden zijn toegevoegd aan de PSStyle-klasse die de voorgrond- en achtergrondwaarden van ConsoleColor toewijzen aan ANSI-escapereeksen (#17938).
- Tabelkoppen voor berekende velden worden standaard cursief opgemaakt
- Ondersteuning toevoegen voor het respecteren van
$PSStyle.OutputRendering
op de externe host (#19601) - Bijgewerkte telemetriegegevens voor het gebruik van
CrescendoBuilt
modules (#20371)
De overige motorupdates
- PowerShell-klasse niet koppelen aan Runspace bij het declareren van het kenmerk
NoRunspaceAffinity
(#18138) - Voeg het kenmerk
ValidateNotNullOrWhiteSpace
toe (#17191) (Bedankt @wmentha!) - Voeg
sqlcmd
toe aan de lijst voor het doorgeven van verouderde argumenten (#18559) - Voeg de functie toe
cd~
(#18308) (Bedankt @GigaScratch!) - Parseren van arraytypen in generieke typen verbeteren (#19205) (Bedankt @MartinGC94!))
- Jokertekens in de root van apparaatpaden repareren (#19442) (Bedankt @MartinGC94!)
- Een openbare API toevoegen voor het verkrijgen van locaties van PSModulePath-elementen (#19422)
- Corrigeerde onjuiste tekenreeks voor typeconversie (#19560) (Bedankt @MartinGC94!)
- Verbeter de trage uitvoering wanneer er 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, FeedbackTexten FeedbackAction eigenschappen toegevoegd aan
$PSStyle.Formatting
waarmee u de opmaak van feedbackberichten kunt wijzigen.
- Met deze functie worden ook de eigenschappen FeedbackName, FeedbackTexten FeedbackAction eigenschappen toegevoegd aan
- PSModuleAutoLoadSkipOfflineFiles - Moduledetectie slaat nu bestanden over die door cloudproviders zijn gemarkeerd als niet volledig opgeslagen op schijf.
- PSCommandWithArgs- - Ondersteuning toevoegen voor het doorgeven van argumenten aan opdrachten als één tekenreeks
De volgende experimentele functies zijn mainstream geworden:
- PS-beperkte-auditlogging
- 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)
Voor meer informatie over experimentele functies, zie Experimentele functies gebruiken.