Dela via


Nyheter i PowerShell 7.4

PowerShell 7.4.7 innehåller följande funktioner, uppdateringar och oförenliga ändringar. PowerShell 7.4.7 bygger på .NET 8.0.12.

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ör #requires -pssnapin (#19320)
  • Test-Json använder nu JsonSchema.NET i stället för Newtonsoft.Json.Schema.
    • Med den här ändringen stöder Test-Json inte längre äldre scheman för utkast 4. (#18141) (Tack @gregsdennis!). Mer information om JSON-scheman finns i dokumentationen JSON Schema. Detta bryter också Test-Json för JSON- och JSONC-filer med kommentarer.
    • ConvertFrom-Json stöd använder fortfarande Newtonsoft.Json.Schema så att det kan konvertera JSON-filer med kommentarer.
  • Utdata från Test-Connection innehåller nu 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)
  • Experimentell funktion PSNativeCommandPreserveBytePipe är nu vanlig. PowerShell bevarar nu byteströmsdata vid omdirigering av stdout- strömmen av ett inbyggt kommando till en fil eller när byteströmsdata skickas till stdin-strömmen för ett inbyggt 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 tab-komplettering

Stort tack till @MartinGC94 och andra för allt ert arbete med att förbättra tabbkomplettering.

  • Å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 hash-tabellnycklar (#17907)
  • Åtgärda typinferensfel för tomma returinstruktioner (#18351)
  • Förbättra typinferensen 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 egenskapstilldelningens slutförande för enums (#19178)
  • Åtgärda slutförande för egenskaper av PSCustomObject-variabler (#18682)
  • Åtgärda medlemskomplettering i attributargument (#17902)
  • Undanta redundanta parameteralias från slutföranderesultat (#19382)
  • Åtgärda komplettering av klassmedlem för klasser med bastyper (#19179)
  • Lägg till slutförande för användning av nyckelord (#16514)
  • Åtgärda TabExpansion2-variabelläcka när du slutför variabler (#18763)
  • Aktivera slutförande av variabler i ScriptBlock-omfång (#19819)
  • Rätta till slutförandet av foreach-satsens variabel (#19814)
  • Korrigera prioritet för inferens av variabeltyp (#18691)
  • Åtgärda medlemsavslut för PowerShell Enum-klass (#19740)
  • Korrigera parsning för matrisliteraler i indexuttryck i metodanrop (#19224)
  • Förbättra komplettering av sökvägen (#19489)
  • Åtgärda ett fel vid indexering utanför gränsen i CompleteInput för tomma skriptindata (#19501)
  • Förbättra prestanda för automatisk komplettering av variabler (#19595)
  • Förbättra slutförande av hashtable-nyckel för typbegränsade variabeltilldelningar, kapslade hashtables med mera (#17660)
  • Härled externa programutdata som strängar (#19193)
  • Uppdatera parameterkomplettering för enums för att exkludera värden som inte tillåts av ValidateRange-attribut (#17750) (Tack @fflaten!)).
  • Åtgärda komplettering av dynamiska parametrar (#19510)
  • Lägg till komplettering för variabler som tilldelats av Data-instruktionen (#19831)
  • Åtgärda expanderande tilde (~) på Windows-systemen till $home för att förhindra felanvändningsfall med inbyggda kommandon (#21529).

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 förloppsindikatoråtergivningen i Invoke-WebRequest när nedladdningen är klar eller avbryts (#18130)
  • Webb-cmdletar får Försök igen efter intervall från svarshuvuden om statuskoden är 429 (#18717)
  • Webb-cmdletar anger standardkodning för teckenuppsättning till UTF-8 (#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ållstypen 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 till webb-cmdletar (#18894)
  • Webcmdlets visar ett fel på https till http-omdirigering (#18595)
  • Lägg till AllowInsecureRedirect växla 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-felformat (#18837)
  • Lägg till ValidateNotNullOrEmpty i OutFile och InFile parametrar för WebCmdlets (#19044)
  • HttpKnownHeaderNames uppdatera huvudlistan (#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-cmdlets (#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 Retry-After sidhuvud. (#19622) (Tack @mkht!)
  • Ändra -TimeoutSec till -ConnectionTimeoutSeconds och lägg till -OperationTimeoutSeconds i webb-cmdlets (#19558) (tack @stevenebutler!) Andra cmdlets)
  • Stöd Ctrl+c när anslutningen hänger sig när du läser 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 Path och LiteralPath som parametrar i Test-Json cmdlet (#19042) (Tack @ArmaanMcleod!)
  • Lägg till NoHeader-parametern i ConvertTo-Csv- och Export-Csv-cmdletar (#19108) (tack @ArmaanMcleod!)
  • Lägg till parametrarna Confirm och WhatIf till Stop-Transcript(#18731) (Tack @JohnLBevan!)
  • Lägg till parametern FuzzyMinimumDistance i Get-Command (#18261)
  • Gör så att -kodning-parametern kan använda ANSI-kodning i PowerShell (#19298) (Tack @CarloToso!))
  • Lägg till framsteg i Copy-Item (#18735)
  • Update-Help rapporterar nu ett fel när du använder implicit kultur i system som inte är amerikanska. (#17780) (Tack @dkaszews!)
  • Kräv inte aktivitet när du skapar en fullständig förloppspost (#18474) (Tack @MartinGC94!))
  • Tillåt inte negativa värden för Get-Content cmdletparametrar -Head och -Tail (#19715) (tack @CarloToso!)
  • Se till att Update-Help kastar rätt fel när den aktuella kulturen inte är kopplad till ett språk (#19765) (tack till @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 växelparametern -CaseInsensitive till Select-Object och Get-Unique cmdlets (#19683) (tack @ArmaanMcleod!)
  • Restart-Computer och Stop-Computer ska ge ett felmeddelande när de inte körs via sudo på Unix (#19824)

Motorförbättringar

Uppdateringar av $PSStyle

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

Andra motoruppdateringar

  • Gör PowerShell-klassen inte associerad med Runspace när du deklarerar attributet NoRunspaceAffinity (#18138)
  • Lägg till attributet ValidateNotNullOrWhiteSpace (#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 arraytyp i generiska typer (#19205) (Tack @MartinGC94!)
  • Åtgärda wildcard-geuppning i roten av enhetssökvägar (#19442) (Tack till @MartinGC94!))
  • Lägg till ett offentligt API för att hämta platser för PSModulePath-element (#19422)
  • Korrigera felaktig sträng-till-typkonvertering (#19560) (Tack @MartinGC94!))
  • Åtgärda långsam körning när många brytpunkter används (#14953) (tack @nohwnd!))
  • Ta bort kod som rör #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 feedbackleverantör.
    • Den här funktionen lägger också till egenskaperna FeedbackName, FeedbackTextoch FeedbackAction till $PSStyle.Formatting som gör att du kan ändra formateringen för feedbackmeddelanden.
  • PSModuleAutoLoadSkipOfflineFiles – Modulidentifiering hoppar nu över filer som markeras av molnleverantören som inte är fullt lagrade på disken.
  • 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.