Delen via


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 ook Test-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.
  • 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 om sudo 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 om sudo 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 en Export-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 in Select-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 aan Select-Object en Get-Unique cmdlets (#19683) (Bedankt @ArmaanMcleod!)
  • Restart-Computer en Stop-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.
  • 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:

PowerShell 7.4 heeft de volgende experimentele functies gewijzigd:

Voor meer informatie over experimentele functies, zie Experimentele functies gebruiken.