Anteckning
Å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