Nyheter i PowerShell 7.4

PowerShell 7.4 innehåller följande funktioner, uppdateringar och icke-bakåtkompatibla ändringar. PowerShell 7.4 bygger på .NET 8.0.0.

En fullständig lista över ändringar finns i CHANGELOG på GitHub-lagringsplatsen.

Icke-bakåtkompatibla ändringar

  • Nano Server Docker-avbildningar är inte tillgängliga för den här versionen
  • Parametern ProgressAction har lagts till i de gemensamma parametrarna
  • Uppdatera vissa PowerShell-API:er för att utlösa ArgumentException i stället för ArgumentNullException när argumentet är en tom sträng (#19215) (Tack @xtqqczze!)
  • Ta bort kod som är relaterad till #requires -pssnapin (#19320)
  • Test-Json använder nu JsonSchema.Net i stället för Newtonsoft.Json.Schema. Med den här ändringen Test-Json stöder inte längre äldre utkast 4-scheman. (#18141) (Tack @gregsdennis!) För mer information om JSON-scheman, se JSON-schemadokumentation .
  • Utdata från Test-Connection och med nu innehåller mer detaljerad information om TCP-anslutningstester
  • .NET införde ändringar som påverkade Test-Connection. Cmdleten returnerar nu ett fel om behovet av att använda sudo på Linux-plattformar när du använder en anpassad buffertstorlek (#20369)
  • Den experimentella funktionen PSNativeCommandPreserveBytePipe är nu mainstream. PowerShell bevarar nu byteströmsdata när du omdirigerar stdout-strömmen för ett inbyggt kommando till en fil eller när byteströmsdata skickas till stdin-strömmen för ett internt kommando.
  • Ändra hur relativa sökvägar i Resolve-Path hanteras när du använder parametern RelativeBasePath (#19755) (Tack @MartinGC94!)
  • Ta bort oanvänd PSv2-kod – tar bort funktionen TabExpansion (#18337)

Uppdateringar av installationsprogrammet

Windows MSI-paketet innehåller nu ett alternativ för att inaktivera PowerShell-telemetri under installationen. Mer information finns i Installera msi-paketet från kommandoraden.

Uppdaterade versioner av PSResourceGet och PSReadLine

PowerShell 7.4 innehåller Microsoft.PowerShell.PSResourceGet v1.0.1. Den här modulen installeras sida vid sida med PowerShellGet v2.2.5 och PackageManagement v1.4.8.1. Mer information finns i dokumentationen för Microsoft.PowerShell.PSResourceGet.

PowerShell 7.4 innehåller nu PSReadLine v2.3.4. Mer information finns i dokumentationen för PSReadLine.

Förbättringar av flikens slutförande

Stort tack till @MartinGC94 och andra för allt deras arbete för att förbättra fliken slutförande.

  • Åtgärda problem när du slutför det första kommandot i ett skript med ett tomt matrisuttryck (#18355)
  • Korrigera slutförande av positionsargument (#17796)
  • Prioritera standardparameteruppsättningen när du slutför positionella argument (#18755)
  • Förbättra pseudobindningen för dynamiska parametrar (#18030)
  • Förbättra typinferensen för hashtable-nycklar (#17907)
  • Åtgärda typinferensfel för tomma returinstruktioner (#18351)
  • Förbättra typinferens för Get-Random (#18972)
  • Åtgärda typinferens för alla omfångsvariabler (#18758)
  • Förbättra uppräkning av härledda typer i pipeline (#17799)
  • Lägg till slutförande för värden i jämförelser vid jämförelse av uppräkningar (#17654)
  • Lägg till slutförande av egenskapstilldelning för uppräkningar (#19178)
  • Åtgärda slutförande av variabelegenskaper för PSCustomObject (#18682)
  • Åtgärda medlemsslut i attributargument (#17902)
  • Undanta redundanta parameteralias från slutföranderesultat (#19382)
  • Åtgärda slutförande av klassmedlem för klasser med bastyper (#19179)
  • Lägg till slutförande för Använda nyckelord (#16514)
  • Åtgärda TabExpansion2-variabelläcka när du slutför variabler (#18763)
  • Aktivera slutförande av variabler i ScriptBlock-omfång (#19819)
  • Åtgärda slutförandet av foreach-instruktionsvariabeln (#19814)
  • Åtgärda inferens för variabeltyp (#18691)
  • Åtgärda medlemsavslut för PowerShell Enum-klassen (#19740)
  • Åtgärda parsning för matrisliteraler i indexuttryck i metodanrop (#19224)
  • Förbättra sökvägens slutförande (#19489)
  • Åtgärda ett fel vid indexering utanför gränsen i CompleteInput för tomma skriptindata (#19501)
  • Förbättra prestanda för variabel slutförande (#19595)
  • Förbättra hashtable-nyckelns slutförande för typbegränsade variabeltilldelningar, kapslade hashtables med mera (#17660)
  • Härled externa programutdata som strängar (#19193)
  • Uppdatera parameterkomplettering för uppräkningar för att exkludera värden som inte tillåts av ValidateRange attribut (#17750) (Tack @fflaten!).
  • Åtgärda slutförande av dynamiska parametrar (#19510)
  • Lägg till slutförande för variabler som tilldelats av Data-instruktionen (#19831)

Förbättringar av webb-cmdlet

Stort tack till @CarloToso och andra för allt arbete med att förbättra webb-cmdletar.

  • Åtgärda dekomprimering i webb-cmdletar för att inkludera Brotli (#17955) (Tack @iSazonov!)
  • Webcmdlets lägger till 308 i omdirigeringskoder och liten rensning (#18536)
  • Slutför återgivningen av förloppsindikatorn i Invoke-WebRequest när nedladdningen är klar eller avbryts (#18130)
  • Webb-cmdletar får återförsök efter intervall från svarshuvuden om statuskoden är 429 (#18717)
  • Webb-cmdletar anger standardkodning för teckenuppsättning till UTF8 (#18219)
  • Bevara WebSession.MaximumRedirection från ändringar (#19190)
  • WebCmdlets parsar XML-deklarationen för att hämta kodningsvärdet, om det finns. (#18748)
  • Korrigering med xml -Body i webcmdlets utan kodning (#19281)
  • Justera PUT-metodens beteende till POST ett för standardinnehållstyp i WebCmdlets (#19152)
  • Ta hänsyn till ContentType från rubriker i WebCmdlets (#19227)
  • Tillåt att den ursprungliga HTTP-metoden bevaras genom att lägga till -PreserveHttpMethodOnRedirect i webb-cmdletar (#18894)
  • Webcmdlets visar ett fel på https till http-omdirigering (#18595)
  • Lägg till AllowInsecureRedirect-växel till webb-cmdletar (#18546)
  • Förbättra utförliga meddelanden i webb-cmdletar när innehållslängden är okänd (#19252)
  • Skapa den relativa URI:n för länkar från svaret i Invoke-WebRequest (#19092)
  • Åtgärda omdirigering för -CustomMethod POST i WebCmdlets (#19111)
  • Ta bort tidigare svar i Webcmdlets (#19117)
  • Förbättra Invoke-WebRequest xml- och json-felformatet (#18837)
  • Lägg till ValidateNotNullOrEmpty i parametrarna OutFile och InFile för WebCmdlets (#19044)
  • Uppdateringshuvudlista för HttpKnownHeaderNames (#18947)
  • Invoke-RestMethod -FollowRelLink åtgärda länkar som innehåller kommatecken (#18829)
  • Åtgärda bugg med hantering av omdirigering och KeepAuthorization i webb-cmdletar (#18902)
  • Lägg till StatusCode i HttpResponseException (#18842)
  • Stöd för HTTP-beständiga anslutningar i webb-cmdletar (#19249) (tack @stevenebutler!)
  • Liten rensning Invoke-RestMethod (#19490)
  • Förbättra det utförliga meddelandet för WebCmdlets för att visa rätt HTTP-version (#19616)
  • Lägg till FileNameStar i MultipartFileContent i WebCmdlets (#19467)
  • Åtgärda HTTP-status från 409 till 429 för WebCmdlets för att få återförsöksintervall från återförsökshuvudet. (#19622) (Tack @mkht!)
  • Ändra -TimeoutSec till -ConnectionTimeoutSeconds och lägg till -OperationTimeoutSeconds i webb-cmdletar (#19558) (tack @stevenebutler!) andra cmdletar
  • Stöd för Ctrl+c när anslutningen låser sig vid läsning av data i WebCmdlets (#19330) (Tack @stevenebutler!)
  • Stöd för Unix-domänsocket i WebCmdlets (#19343)

Andra cmdlet-förbättringar

  • Test-Connection returnerar nu ett fel om behovet av att använda sudo på Linux-plattformar när du använder en anpassad buffertstorlek (#20369)
  • Lägg till utdatatyper i Format-kommandon (#18746) (Tack @MartinGC94!)
  • Lägg till attribut för utdatatyp för Get-WinEvent (#17948) (tack @MartinGC94!)
  • Lägg till parametrarna Path och LiteralPath i Test-Json cmdleten (#19042) (tack @ArmaanMcleod!)
  • Lägg till NoHeader-parametern i och cmdletar (#19108) (tack Export-CsvConvertTo-Csv@ArmaanMcleod!)
  • Lägg till parametrarna Confirm och WhatIf i Stop-Transcript(#18731) (Tack @JohnLBevan!)
  • Lägg till fuzzyMinimumDistance-parametern i Get-Command (#18261)
  • Gör så att kodningsparametern kan ta ANSI kodning i PowerShell (#19298) (tack @CarloToso!)
  • Lägg till förlopp i Copy-Item (#18735)
  • Update-Help rapporterar nu ett fel när implicit kultur används i system som inte är amerikanska. (#17780) (Tack @dkaszews!)
  • Kräv inte aktivitet när du skapar en slutförd förloppspost (#18474) (tack @MartinGC94!)
  • Tillåt inte negativa värden för Get-Content cmdlet-parametrar -Head och -Tail (#19715) (tack @CarloToso!)
  • Skapa Update-Help ett fel när den aktuella kulturen inte är associerad med ett språk (#19765) (tack @josea!)
  • Tillåt kombination av -Skip och -SkipLast parametrar i Select-Object cmdlet. (#18849) (Tack @ArmaanMcleod!)
  • Lägg till Get-SecureRandom cmdlet (#19587)
  • Set-Clipboard -AsOSC52 för fjärranvändning (#18222) (tack @dkaszews!)
  • Påskynda Resolve-Path relativ sökvägsupplösning (#19171) (tack @MartinGC94!)
  • Lade till switchparametern -CaseInsensitive till Select-Object och Get-Unique cmdletar (#19683) (tack @ArmaanMcleod!)
  • Restart-Computer och Stop-Computer bör misslyckas med fel när inte körs via sudo på Unix (#19824)

Motorförbättringar

Uppdateringar till$PSStyle

  • Lägger till dim- och dimoff-egenskaper (#18653)
  • Statiska metoder har lagts till i PSStyle-klassen som mappar förgrunds- och bakgrundsvärden för ConsoleColor till ANSI-escapesekvenser (#17938)
  • Tabellrubriker för beräknade fält formateras som standard i kursiv stil
  • Lägg till stöd för respekt $PSStyle.OutputRendering på fjärrvärden (#19601)
  • Uppdaterade telemetridata för användning av CrescendoBuilt moduler (#20371)

Andra motoruppdateringar

  • Gör PowerShell-klassen inte associerad med Runspace när du deklarerar NoRunspaceAffinity attributet (#18138)
  • ValidateNotNullOrWhiteSpace Lägg till attributet (#17191) (tack@wmentha!)
  • Lägg till sqlcmd i listan för att skicka äldre argument (#18559)
  • Lägg till funktionen cd~ (#18308) (tack @GigaScratch!)
  • Åtgärda parsning av matristyp i generiska typer (#19205) (tack @MartinGC94!)
  • Åtgärda jokertecken i roten av enhetssökvägar (#19442) (tack @MartinGC94!)
  • Lägg till ett offentligt API för att hämta platser för PSModulePath-element (#19422)
  • Korrigera felaktig sträng för att skriva konvertering (#19560) (Tack @MartinGC94!)
  • Åtgärda långsam körning när många brytpunkter används (#14953) (tack @nohwnd!)
  • Ta bort kod som är relaterad till #requires -pssnapin (#19320)

Experimentella funktioner

PowerShell 7.4 introducerar följande experimentella funktioner:

  • PSFeedbackProvider – Ersätter ramverket för hårdkodade förslag med en utökningsbar feedbackprovider.
    • Den här funktionen lägger också till egenskaperna $PSStyle.Formatting FeedbackName, FeedbackText och FeedbackAction så att du kan ändra formateringen för feedbackmeddelanden.
  • PSModuleAutoLoadSkipOfflineFiles – Modulidentifiering hoppar nu över filer som markeras av molnleverantörer som inte helt på disk.
  • PSCommandWithArgs – Lägg till stöd för att skicka argument till kommandon som en enda sträng

Följande experimentella funktioner blev vanliga:

PowerShell 7.4 ändrade följande experimentella funktioner:

Mer information om experimentella funktioner finns i Använda experimentella funktioner.