Delen via


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

De volgende experimentele functies zijn mainstream geworden:

PowerShell 7.4 heeft de volgende experimentele functies gewijzigd:

Zie Experimentele functies gebruiken voor meer informatie over de experimentele functies.