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.
- Med den här ändringen stöder
- 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ändasudo
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ä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 Path och LiteralPath som parametrar i
Test-Json
cmdlet (#19042) (Tack @ArmaanMcleod!) - Lägg till NoHeader-parametern i
ConvertTo-Csv
- ochExport-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 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 växelparametern
-CaseInsensitive
tillSelect-Object
ochGet-Unique
cmdlets (#19683) (tack @ArmaanMcleod!) -
Restart-Computer
ochStop-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.
- Den här funktionen lägger också till egenskaperna FeedbackName, FeedbackTextoch FeedbackAction till
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 ändrade följande experimentella funktioner:
- PSCommandNotFoundSuggestion – Den här funktionen använder nu en utökningsbar feedbackprovider i stället för hårdkodade förslag (#18726)
Mer information om experimentella funktioner finns i Använda experimentella funktioner.