Dela via


Nyheter i PowerShell 7.4

PowerShell 7.4.14 innehåller följande funktioner, uppdateringar och icke-bakåtkompatibla ändringar. PowerShell 7.4.14 bygger på .NET 8.0.25-körning.

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

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

Det 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.1.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.6. 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 nyckelordet using (#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 stöd för fullständighet för variabler som tilldelats av instruktionen data (#19831)
  • Åtgärda expanderande tilde (~) på Windows-system till $HOME för att förhindra att användningsfall med inbyggda kommandon bryts (#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!)
  • Parametern [switch]-CaseInsensitive har lagts till Select-Object och Get-Unique cmdletar (#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

  • Flytta .NET metodanropsloggning till efter att den nödvändiga typkonverteringen har gjorts för metodargument (#25568)
  • Återgång till AppLocker efter WldpCanExecuteFile (#25229)
  • 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.