Delen via


Nieuw in PowerShell 7.5

PowerShell 7.5.0 bevat de volgende functies, updates en belangrijke wijzigingen. PowerShell 7.5 is gebouwd op de algemene versie van .NET 9.0.1.

Zie changeLOG in de GitHub-opslagplaats voor een volledige lijst met wijzigingen. Zie [Wat is er nieuw in .NET 9][07] voor meer informatie over .NET 9.

Wijzigingen die fouten veroorzaken

  • Fix -OlderThan en -NewerThan parameters voor Test-Path bij gebruik PathType en datumbereik (#20942) (Bedankt @ArmaanMcleod!)
    • Eerder -OlderThan zou worden genegeerd als deze samen worden opgegeven
  • Standaard wijzigen New-FileCatalog -CatalogVersion in 2 (#20428) (Bedankt @ThomasNieto!)
  • Voorkomen dat u hulp krijgt van netwerklocaties in beperkte externe sessies (#20593)
  • Windows Installer onthoudt nu installatieopties die worden gebruikt en gebruikt om opties voor de volgende installatie te initialiseren (#20420) (Bedankt)@reduckted!)
  • ConvertTo-Json serialiseert BigInteger nu als een getal (#21000) (Bedankt @jborean93!)
  • .NET 9 heeft de BinaryFormatter-implementatie verwijderd die een regressie veroorzaakt in de cmdlet Out-GridView. De zoekfunctie van Out-GridView werkt niet in PowerShell 7.5. Dit probleem wordt bijgehouden in probleem 24749.

Bijgewerkte modules

PowerShell 7.5.0 bevat de volgende bijgewerkte modules:

  • Microsoft.PowerShell.PSResourceGet v1.1.0
  • PSReadLine v2.3.6

Verbeteringen aan tabvoltooiing

Veel dank aan @ArmaanMcleod en anderen voor al hun werk om de voltooiing van tabbladen te verbeteren.

  • Terugvallen op typedeductie wanneer hashtable-sleutelwaarde niet kan worden opgehaald uit een veilige expressie (#21184) (Bedankt@MartinGC94!)
  • Herstel de regressie bij het uitvoeren van typedeductie voor $_ (#21223) (Bedankt @MartinGC94!)
  • Uitbreiden ~ naar $home Windows met tabvoltooiing (#21529)
  • Niet voltooien bij het declareren van de parameternaam en het klasselid (#21182) (Bedankt) @MartinGC94!)
  • Voorkomen dat het bestand wordt voltooid wanneer u met tab typnamen invult (#20084) (bedankt) @MartinGC94)
  • Argument completer toevoegen aan -VersionSet-StrictMode (#20554) (Bedankt@ArmaanMcleod!)
  • Argument -Verb completer toevoegen voor Get-Verb/ Get-Command en herstructureren Get-Verb (#20286) (Bedankt @ArmaanMcleod)
  • Argument -Verb completer toevoegen voor Start-Process (#20415) (Bedankt @ArmaanMcleod)
  • Argument -Scope completer toevoegen voor *-Variable, *-Alias & *-PSDrive opdrachten (#20451) (Bedankt @ArmaanMcleod)
  • Voltooiing -Module toevoegen voor Save-Help/Update-Help opdrachten (#20678) (Bedankt @ArmaanMcleod)

Nieuwe cmdLets

  • Toevoegen ConvertTo-CliXml en ConvertFrom-CliXml cmdlets (#21063) (bedankt) @ArmaanMcleod!)

Verbeteringen in web-cmdlets

  • Oplossing om -PassThru en -Outfile samen te werken (#24086)
  • Eigenschap OutFile toevoegen in WebResponseObject (#24047)
  • Bestandsnaam weergeven in Invoke-WebRequest -OutFile -Verbose (#24041)
  • WebCmdlets herstellen wanneer -Body is opgegeven, maar ContentType niet (#23952) (Bedankt) @CarloToso!)
  • Fix Invoke-WebRequest to report correct size when -Resume is specified (#20207) (Thanks @LNKLEO!)
  • Web-cmdlets herstellen zodat WinForm apps correct kunnen werken (#20606)

Andere cmdlet-verbeteringen

  • Werken -NoRestart met Register-PSSessionConfiguration (#23891)
  • Toevoegen IgnoreComments en AllowTrailingCommas opties voor Test-Json cmdlet (#23817) (Bedankt @ArmaanMcleod!)
  • Get-Help kan parameters rapporteren met ValueFromRemainingArguments kenmerk als pijplijn (#23871)
  • Type wijzigen LineNumberulong in in Select-String (#24075) (Bedankt @Snowman-25!)
  • Get-Process: Beheerdersvereiste verwijderen voor -IncludeUserName (#21302) (Bedankt @jborean93!)
  • Oplossing Test-Path -IsValid om te controleren op ongeldige pad- en bestandsnaamtekens (#21358)
  • Toevoegen RecommendedAction aan ConciseView de foutrapportage (#20826) (Bedankt@JustinGrote!)
  • Voortgangsbalk toegevoegd voor Remove-Item cmdlet (#20778) (Bedankt @ArmaanMcleod!)
  • Oplossing Test-Connection vanwege .NET 8-wijzigingen (#20369)
  • Probleem met niet-afsluitfout opgelost Get-Service om categorie op te nemen (#20276)
  • Toevoegen -Empty en -InputObject parameters toevoegen aan New-Guid (#20014) (Bedankt @CarloToso!)
  • Voeg de alias r toe aan de parameter -Recurse voor de Get-ChildItem opdracht (#20100) (Bedankt) @kilasuit!)
  • Toevoegen LP aan LiteralPath aliassen voor functies die nog steeds ontbreken (#20820)
  • Impliciete lokalisatieback toevoegen aan Import-LocalizedData (#19896) (Bedankt@chrisdent-de!)
  • Toevoegen Aliases aan de eigenschappen die worden weergegeven bij het opmaken van de Help-inhoud van de parameter die wordt geretourneerd door Get-Help (#20994)
  • Toevoegen HelpUri aan Remove-Service (#20476)
  • Voltooiingscrash opgelost voor de SCCM-provider (#20815, #20919, #20915) (Bedankt @MartinGC94!)
  • Regressie herstellen wanneer Get-Content-Tail 0 en -Wait samen worden gebruikt (#20734) (bedankt) @CarloToso!)
  • Oplossing Start-Process -PassThru om ervoor te zorgen dat de ExitCode eigenschap toegankelijk is voor het geretourneerde Process object (#20749) (Bedankt)@CodeCyclone!)
  • Oplossing Group-Object voor het gebruik van de huidige cultuur voor de uitvoer (#20608)
  • Uitvoer herstellen Group-Object met geïnterpoleerde tekenreeksen (#20745) (Bedankt @mawosoft!)
  • Weergave van DisplayRoot netwerk herstellen (PSDrive)
  • Voortgang herstellen Copy-Item om alleen voltooid weer te geven wanneer alle bestanden worden gekopieerd (#20517)
  • Regressie van UNC-padvoltooiing herstellen (#20419) (Bedankt @MartinGC94!)
  • Rapportfout als ongeldig -ExecutionPolicy wordt doorgegeven aan pwsh (#20460)
  • WinGetCommandNotFound- en CompletionPredictor-modules toevoegen om het gebruik bij te houden (#21040)
  • Parameter DateKind toevoegen aan ConvertFrom-Json (#20925) (Bedankt@jborean93!)
  • DirectoryInfo toevoegen aan het OutputType voor New-Item (#21126) (Bedankt)@MartinGC94!)
  • Serialisatie Get-Error van matrixwaarden oplossen (#21085) (Bedankt @jborean93!)
  • Oplossing Test-ModuleManifest zodat het een UNC-pad kan gebruiken (#24115)
  • Oplossing Get-TypeData om direct naar de pijplijn te schrijven in plaats van eerst gegevens te verzamelen (#24236) (Bedankt) @MartinGC94)
  • Parameter toevoegen -Force aan Resolve-Path en Convert-Path cmdlets ter ondersteuning van verborgen jokertekens #20981 (Bedankt) @ArmaanMcleod!)

Engineverbeteringen

  • ANSI-foutkleur expliciet starten en stoppen (#24065) (Bedankt @JustinGrote!)
  • De definitie van .NET-overbelasting van algemene methoden verbeteren (#21326) (Bedankt @jborean93!)
  • += De bewerking voor een verzameling optimaliseren wanneer het een objectmatrix is (#23901) (Bedankt)@jborean93!)
  • Telemetrie toevoegen om te controleren op specifieke tags bij het importeren van een module (#20371)
  • Allowlist voor het laden van telemetrie van modules toevoegen PSAdapter en toevoegen (ConsoleGuiTools)
  • WinGet-module toevoegen om het gebruik bij te houden (#21040)
  • Zorg ervoor dat de bestandsnaam niet null is bij het vastleggen van WDAC ETW-gebeurtenissen (#20910) (Bedankt)@jborean93!)
  • Er zijn vier regressies opgelost die zijn geïntroduceerd door de wdAC-logboekregistratiefunctie (#20913)
  • Laat de invoer, uitvoer en fout uitgeschakeld wanneer ze niet worden omgeleid (#20853)
  • Impliciete externe proxy-cmdlets corrigeren om te reageren op algemene parameters (#20367)
  • Neem de moduleversie op in foutberichten wanneer de module niet wordt gevonden (#20144) (Bedankt) @ArmaanMcleod!)
  • Oplossing unixmode voor afhandeling setuid en sticky wanneer het bestand geen uitvoerbaar bestand is (#20366)
  • Oplossing voor het gebruik van assembly voor het gebruik van Path.Combine bij het maken van assemblypaden (#21169)
  • Valideer de waarde voor het gebruik van naamruimte tijdens semantische controles om te voorkomen dat ongeldige naamruimten worden declaraties (#21162)
  • Algemene hulpprogramma's verwerken speciaal bij het voorbereiden op $PSHome PATH (#24228)

Experimentele functies

De volgende experimentele functies zijn geconverteerd naar basisfuncties in PowerShell 7.5-rc.1:

De volgende experimentele functies zijn opgenomen in PowerShell 7.5-rc.1:

Prestatieverbeteringen

PowerShell 7.5-rc.1 bevat PR#23901 van @jborean93 die de prestaties van de +=-bewerking voor een matrix van objecten verbetert.

In het volgende voorbeeld worden de prestaties voor verschillende methoden voor het toevoegen van elementen aan een matrix meten.

$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
}

Wanneer u het script uitvoert in PowerShell 7.4.6, ziet u dat het gebruik van de operator += de traagste methode is.

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

Wanneer u het script uitvoert in PowerShell 7.5-rc.1, ziet u dat het gebruik van de operator += veel sneller is dan PowerShell 7.4.6. Het is nu ook sneller dan het gebruik van de methode 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

[07]: /dotnet/core/whats-new/dotnet-9/overview)