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!). Mer information om JSON-scheman finns i JSON Schema-dokumentationen . Detta bryterTest-Json
också för JSON- och JSONC-filer med kommentarer. ConvertFrom-Json
support använder fortfarande Newtonsoft.Json.Schema så att det kan konvertera JSON-filer med kommentarer.
- Med den här ändringen
- 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ändasudo
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)
- Åtgärda expanderande tilde (
~
) i Windows-system för att$home
förhindra att felanvändningsfall med inbyggda kommandon (#21529) används
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ändasudo
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-Csv
ConvertTo-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 iSelect-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
tillSelect-Object
ochGet-Unique
cmdletar (#19683) (tack @ArmaanMcleod!) Restart-Computer
ochStop-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.
- Den här funktionen lägger också till egenskaperna
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 ändrade följande experimentella funktioner:
- PSCommandNotFoundSuggestion – Den här funktionen använder nu en utökningsbar feedbackleverantör i stället för hårdkodade förslag (#18726)
Mer information om experimentella funktioner finns i Använda experimentella funktioner.