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 voorTest-Path
bij gebruikPathType
en datumbereik (#20942) (Bedankt @ArmaanMcleod!)- Eerder
-OlderThan
zou worden genegeerd als deze samen worden opgegeven
- Eerder
- 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
serialiseertBigInteger
nu als een getal (#21000) (Bedankt @jborean93!) - .NET 9 heeft de
BinaryFormatter
-implementatie verwijderd die een regressie veroorzaakt in de cmdletOut-GridView
. De zoekfunctie vanOut-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
-Version
Set-StrictMode
(#20554) (Bedankt@ArmaanMcleod!) - Argument
-Verb
completer toevoegen voorGet-Verb
/Get-Command
en herstructurerenGet-Verb
(#20286) (Bedankt @ArmaanMcleod) - Argument
-Verb
completer toevoegen voorStart-Process
(#20415) (Bedankt @ArmaanMcleod) - Argument
-Scope
completer toevoegen voor*-Variable
,*-Alias
&*-PSDrive
opdrachten (#20451) (Bedankt @ArmaanMcleod) - Voltooiing
-Module
toevoegen voorSave-Help
/Update-Help
opdrachten (#20678) (Bedankt @ArmaanMcleod)
Nieuwe cmdLets
- Toevoegen
ConvertTo-CliXml
enConvertFrom-CliXml
cmdlets (#21063) (bedankt) @ArmaanMcleod!)
Verbeteringen in web-cmdlets
- Oplossing om
-PassThru
en-Outfile
samen te werken (#24086) - Eigenschap
OutFile
toevoegen inWebResponseObject
(#24047) - Bestandsnaam weergeven in
Invoke-WebRequest -OutFile -Verbose
(#24041) - WebCmdlets herstellen wanneer
-Body
is opgegeven, maarContentType
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
metRegister-PSSessionConfiguration
(#23891) - Toevoegen
IgnoreComments
enAllowTrailingCommas
opties voorTest-Json
cmdlet (#23817) (Bedankt @ArmaanMcleod!) - Get-Help kan parameters rapporteren met
ValueFromRemainingArguments
kenmerk als pijplijn (#23871) - Type wijzigen
LineNumber
ulong
in inSelect-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
aanConciseView
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 aanNew-Guid
(#20014) (Bedankt @CarloToso!) - Voeg de alias
r
toe aan de parameter-Recurse
voor deGet-ChildItem
opdracht (#20100) (Bedankt) @kilasuit!) - Toevoegen
LP
aanLiteralPath
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 doorGet-Help
(#20994) - Toevoegen
HelpUri
aanRemove-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 deExitCode
eigenschap toegankelijk is voor het geretourneerdeProcess
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 aanpwsh
(#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
aanResolve-Path
enConvert-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 afhandelingsetuid
ensticky
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:
- PSRedirectToVariable - Omleiding naar een variabele toestaan (#20381)
- PSNativeWindowsTildeExpansion - Tilde-uitbreiding toevoegen voor systeemeigen windows-uitvoerbare bestanden (#20402) (Bedankt @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Json
behandelt nu grote opsommingen als getallen (#20999) (Bedankt@jborean93!)
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)