Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
PowerShell 7.5.4 innehåller följande funktioner, uppdateringar och icke-bakåtkompatibla ändringar. PowerShell 7.5.4 bygger på .NET 9.0.306-versionen.
En fullständig lista över ändringar finns i CHANGELOG på GitHub-lagringsplatsen. Mer information om .NET 9 finns i Nyheter i .NET 9.
Icke-bakåtkompatibla ändringar
- Korrigera
-OlderThanoch-NewerThanav parametrar förTest-Pathnär du använderPathTypeoch datumintervall (#20942) (Tack @ArmaanMcleod!)- Tidigare
-OlderThanskulle ignoreras om det anges tillsammans
- Tidigare
- Ändra
New-FileCatalog -CatalogVersionstandardvärdet till 2 (#20428) (tack @ThomasNieto!) - Blockera att få hjälp från nätverksplatser i begränsade fjärrkommunikationssessioner (#20593)
- Windows-installationsprogrammet kommer nu ihåg de installationsalternativ som används och använder dem för att initiera alternativ för nästa installation (#20420) (Tack @reduckted!)
-
ConvertTo-JsonserialiserarBigIntegernu som ett tal (#21000) (tack @jborean93!)
Moduler har uppdaterats
PowerShell 7.5.4 innehåller följande uppdaterade moduler:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine v2.3.6
Förbättringar av flikens slutförande
Stort tack till @ArmaanMcleod och andra för allt arbete med att förbättra flikautfyllnaden.
- Återgå till typinferens när hashtabellnyckelvärde inte kan hämtas från ett säkert uttryck (#21184) (Tack @MartinGC94!)
- Åtgärda regressionen när du gör typinferens för
$_(#21223) (tack @MartinGC94!) - Expandera
~till$HOMEi Windows med tabbavslut (#21529) - Slutför inte när du deklarerar parameternamn och klassmedlem (#21182) (Tack @MartinGC94!)
- Förhindra återgång till filkomplettering vid tabbkomplettering av typnamn (#20084) (tack @MartinGC94)
- Lägg till argument completer till
-VersionförSet-StrictMode(#20554) (Tack @ArmaanMcleod!) - Lägg till
-Verbargument completer förGet-Verb/Get-Commandoch refaktoriseraGet-Verb(#20286) (Tack @ArmaanMcleod) - Lägg till
-Verbargument completer förStart-Process(#20415) (Tack @ArmaanMcleod) - Lägg till
-Scopeargumentkompletterare för*-Variable,*-Aliasoch*-PSDrivekommandon (#20451) (Tack @ArmaanMcleod) - Lägg till
-Moduleslutförande förSave-Help/Update-Helpkommandon (#20678) (tack @ArmaanMcleod)
Nya cmdletar
- Lägg till
ConvertTo-CliXmlochConvertFrom-CliXmlcmdlets (#21063), tack @ArmaanMcleod!)
Förbättringar av webb-cmdletar
- Korrigering för att tillåta
-PassThruoch-Outfilearbeta tillsammans (#24086) - Lägg till
OutFileegenskap iWebResponseObject(#24047) - Visa filnamn i
Invoke-WebRequest -OutFile -Verbose(#24041) - Åtgärda WebCmdlets när
-Bodyhar angetts menContentTypeär inte (#23952) (Tack @CarloToso!) - Korrigering
Invoke-WebRequestför att rapportera rätt storlek när-Resumehar angetts (#20207) (Tack @LNKLEO!) - Åtgärda webb-cmdletar så att appar kan
WinFormfungera korrekt (#20606)
Andra cmdlet-förbättringar
- Åtgärda
Out-GridViewgenom att ersätta användningen av föråldradBinaryFormattermed anpassad implementering (#25559) - Aktivera
-NoRestartför att arbeta medRegister-PSSessionConfiguration(#23891) - Lägg till
IgnoreCommentsoch alternativ förAllowTrailingCommascmdlet (Test-Json) (Tack@ArmaanMcleod!) - Get-Help kan rapportera parametrar med
ValueFromRemainingArgumentsattribut som pipeline-able (#23871) - Ändra typ av
LineNumbertillulongiSelect-String(#24075) (Tack @Snowman-25!) -
Get-Process: Ta bort administratörskrav för-IncludeUserName(#21302) (Tack @jborean93!) - Åtgärda
Test-Path -IsValidför att söka efter ogiltiga sökvägs- och filnamnstecken (#21358) - Lägg till
RecommendedActiontillConciseViewi felrapportering (#20826) (tack @JustinGrote!) - Förloppsindikatorn har lagts till för
Remove-Itemcmdlet (#20778) (tack @ArmaanMcleod!) - Korrigering
Test-Connectionpå grund av .NET 8-ändringar (#20369) - Åtgärda
Get-Serviceoavslutat felmeddelande att inkludera kategori (#20276) - Lägg till
-Emptyoch-InputObjectparametrar iNew-Guid(#20014) (tack @CarloToso!) - Lägg till aliaset
ri parametern-RecurseGet-ChildItemför kommandot (#20100) (Tack @kilasuit!) - Lägg till
LPtillLiteralPathalias för funktioner som fortfarande saknar det (#20820) - Lägg till implicit lokaliseringsåterställning till
Import-LocalizedData(#19896) (Tack @chrisdent-de!) - Lägg till
Aliasesi egenskaperna som visas när du formaterar hjälpinnehållet för parametern som returneras avGet-Help(#20994) - Lägg till
HelpUriiRemove-Service(#20476) - Åtgärda slutförandekrasch för SCCM-providern (#20815, #20919, #20915) (Tack @MartinGC94!)
- Åtgärda regression i
Get-Contentnär-Tail 0och-Waitanvänds tillsammans (#20734) (tack @CarloToso!) - Åtgärda
Start-Process -PassThruför att säkerställaExitCodeegenskapen är tillgänglig för det returneradeProcessobjektet (#20749) (tack @CodeCyclone!) - Åtgärda
Group-Objectför att använda aktuell kultur för dess utdata (#20608) - Åtgärda
Group-Objectutdata med hjälp av interpolerade strängar (#20745) (Tack @mawosoft!) - Åtgärda rendering av
DisplayRootför nätverkPSDrive(#20793) - Åtgärda
Copy-Itemförloppet för att endast visa slutförda när alla filer kopieras (#20517) - Åtgärda regression av UNC-sökvägens slutförande (#20419) (tack @MartinGC94!)
- Rapportera fel om ogiltigt
-ExecutionPolicyhar skickats tillpwsh(#20460) - Lägg till WinGetCommandNotFound - och CompletionPredictor-moduler för att spåra användningen (#21040)
- Lägg till DateKind-parametern i
ConvertFrom-Json(#20925) (tack @jborean93!) - Lägg till DirectoryInfo i OutputType för New-Item (#21126) (Tack @MartinGC94!))
- Åtgärda
Get-Errorserialisering av matrisvärden (#21085) (tack @jborean93!) - Åtgärda
Test-ModuleManifestså att den kan använda en UNC-sökväg (#24115) - Korrigering
Get-TypeDataför att skriva till pipelinen omedelbart i stället för att samla in data först (#24236) (Tack @MartinGC94) - Lägg till
-Forceparameter tillResolve-PathochConvert-Pathcmdletar för att stödja dolda filer med jokertecken #20981 (tack @ArmaanMcleod!) - Ställ in standardhandtag explicit när du startar en process med
-NoNewWindow(#25324) - Gör ärvda skyddade interna instansmedlemmar tillgängliga i klassens omfång. (#25547) (Tack @mawosoft!))
- Ta bort det gamla fuzzy-förslaget och åtgärda det lokala skriptfilnamnsförslaget (#25330)
- Åtgärda
PSMethodInvocationConstraints.GetHashCode-metod (#25306) (Tack @crazyjncsu!)
Motorförbättringar
- Flytta .NET-metodanropsloggning till efter att den nödvändiga typkonverteringen har gjorts för metodargument (#25357)
- Tillbaka till AppLocker efter
WldpCanExecuteFile(#25305) - Starta och stoppa uttryckligen ANSI-felfärg (#24065) (tack @JustinGrote!))
- Förbättra .NET-överlagringsdefinitionen för generiska metoder (#21326) (Tack @jborean93!)
- Optimera åtgärden
+=för en samling när det är en objektmatris (#23901) (Tack @jborean93!) - Lägg till telemetri för att söka efter specifika taggar när du importerar en modul (#20371)
- Lägg till
PSAdapterochConsoleGuiToolsi telemetri tillåtelselistan för modulens laddning (#20641) - Lägg till WinGet-modul för att spåra användning (#21040)
- Kontrollera att filnamnet inte är null när WDAC ETW-händelser loggas (#20910) (tack @jborean93!)
- Åtgärda fyra regressioner som introducerades av WDAC-loggningsfunktionen (#20913)
- Lämna indata, utdata och felhantering osatta när de inte omdirigeras (#20853)
- Åtgärda implicita cmdletar för fjärrkommunikationsproxy för att agera på vanliga parametrar (#20367)
- Inkludera modulversionen i felmeddelanden när modulen inte hittas (#20144) (tack @ArmaanMcleod!)
- Korrigering
unixmodeför att hanterasetuidochstickynär filen inte är körbar (#20366) - Korrigera användningen av assembly så att Path.Combine används vid konstruktions av sökvägar för assembly (#21169)
- Verifiera värdet för att använda namnområdet under semantiska kontroller för att förhindra att ogiltiga namnområden deklareras (#21162)
- Hantera globala verktyg särskilt när du lägger till
$PSHOMEtill PATH (#24228)
Experimentella funktioner
Följande experimentella funktioner konverterades till vanliga funktioner i PowerShell 7.5-rc.1:
Följande experimentella funktioner ingår i PowerShell 7.5-rc.1:
- PSRedirectToVariable – Tillåt omdirigering till en variabel (#20381)
- PSNativeWindowsTildeExpansion – Lägg till tilde-expansion för Windows-inbyggda körbara filer (#20402) (tack @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonbehandlar nu stora enum som siffror (#20999) (Tack @jborean93!)
Prestandaförbättringar
PowerShell 7.5-rc.1 inkluderade PR#23901 från @jborean93 som förbättrar prestanda för += åtgärden för en matris med objekt.
I följande exempel mäts prestanda för olika metoder för att lägga till element i en matris.
$tests = @{
'Direct Assignment' = {
param($count)
$result = foreach($i in 1..$count) {
$i
}
}
'List<T>.Add(T)' = {
param($count)
$result = [Collections.Generic.List[int]]::new()
foreach($i in 1..$count) {
$result.Add($i)
}
}
'Array+= Operator' = {
param($count)
$result = @()
foreach($i in 1..$count) {
$result += $i
}
}
}
5kb, 10kb | ForEach-Object {
$groupResult = foreach($test in $tests.GetEnumerator()) {
$ms = (Measure-Command { & $test.Value -Count $_ }).TotalMilliseconds
[pscustomobject]@{
CollectionSize = $_
Test = $test.Key
TotalMilliseconds = [Math]::Round($ms, 2)
}
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}
$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [Math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
}
När du kör skriptet i PowerShell 7.4.6 ser du att det är den långsammaste metoden att använda operatorn +=.
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.17 1x
5120 List<T>.Add(T) 90.79 21.77x slower
5120 Array+= Operator 342.58 82.15x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 0.64 1x
10240 List<T>.Add(T) 184.10 287.66x slower
10240 Array+= Operator 1668.13 2606.45x slower
När du kör skriptet i PowerShell 7.5-rc.1 ser du att det går mycket snabbare att använda +=-operatorn än PowerShell 7.4.6. Nu är det också snabbare än att använda metoden List<T>.Add(T).
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.71 1x
5120 Array+= Operator 40.42 8.58x slower
5120 List<T>.Add(T) 92.17 19.57x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 1.76 1x
10240 Array+= Operator 104.73 59.51x slower
10240 List<T>.Add(T) 173.00 98.3x slower