Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
PowerShell 7.5.4 bevat de volgende functies, updates en belangrijke wijzigingen. PowerShell 7.5.4 is gebouwd op .NET 9.0.306-release.
Zie changeLOG in de GitHub-opslagplaats voor een volledige lijst met wijzigingen. Zie Wat is er nieuw in .NET 9 voor meer informatie over .NET 9.
Wijzigingen die fouten veroorzaken
- Fix
-OlderThanen-NewerThanparameters voorTest-Pathbij gebruikPathTypeen datumbereik (#20942) (Bedankt @ArmaanMcleod!)- Eerder
-OlderThanzou worden genegeerd als deze samen worden opgegeven
- Eerder
- Standaard wijzigen
New-FileCatalog -CatalogVersionin 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-JsonserialiseertBigIntegernu als een getal (#21000) (Bedankt @jborean93!)
Bijgewerkte modules
PowerShell 7.5.4 bevat de volgende bijgewerkte modules:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- 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$HOMEWindows 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
-Verbcompleter toevoegen voorGet-Verb/Get-Commanden herstructurerenGet-Verb(#20286) (Bedankt @ArmaanMcleod) - Argument
-Verbcompleter toevoegen voorStart-Process(#20415) (Bedankt @ArmaanMcleod) - Argument
-Scopecompleter toevoegen voor*-Variable,*-Alias&*-PSDriveopdrachten (#20451) (Bedankt @ArmaanMcleod) - Voltooiing
-Moduletoevoegen voorSave-Help/Update-Helpopdrachten (#20678) (Bedankt @ArmaanMcleod)
Nieuwe cmdLets
- Toevoegen
ConvertTo-CliXmlenConvertFrom-CliXmlcmdlets (#21063) (bedankt) @ArmaanMcleod!)
Verbeteringen in web-cmdlets
- Oplossing om
-PassThruen-Outfilesamen te werken (#24086) - Eigenschap
OutFiletoevoegen inWebResponseObject(#24047) - Bestandsnaam weergeven in
Invoke-WebRequest -OutFile -Verbose(#24041) - WebCmdlets herstellen wanneer
-Bodyis opgegeven, maarContentTypeniet (#23952) (Bedankt) @CarloToso!) - Oplossing
Invoke-WebRequestom de juiste maat te rapporteren wanneer-Resumedeze is opgegeven (#20207) (Bedankt @LNKLEO!) - Web-cmdlets herstellen zodat
WinFormapps correct kunnen werken (#20606)
Andere cmdlet-verbeteringen
- Oplossing
Out-GridViewdoor het gebruik van verouderdBinaryFormattergebruik te vervangen door aangepaste implementatie (#25559) - Werken
-NoRestartmetRegister-PSSessionConfiguration(#23891) - Toevoegen
IgnoreCommentsenAllowTrailingCommasopties voorTest-Jsoncmdlet (#23817) (Bedankt @ArmaanMcleod!) - Get-Help kan parameters rapporteren met
ValueFromRemainingArgumentskenmerk als pijplijn (#23871) - Type wijzigen
LineNumberulongin inSelect-String(#24075) (Bedankt @Snowman-25!) -
Get-Process: Beheerdersvereiste verwijderen voor-IncludeUserName(#21302) (Bedankt @jborean93!) - Oplossing
Test-Path -IsValidom te controleren op ongeldige pad- en bestandsnaamtekens (#21358) - Toevoegen
RecommendedActionaanConciseViewde foutrapportage (#20826) (Bedankt@JustinGrote!) - Voortgangsbalk toegevoegd voor
Remove-Itemcmdlet (#20778) (Bedankt @ArmaanMcleod!) - Oplossing
Test-Connectionvanwege .NET 8-wijzigingen (#20369) - Probleem met niet-afsluitfout opgelost
Get-Serviceom categorie op te nemen (#20276) - Toevoegen
-Emptyen-InputObjectparameters toevoegen aanNew-Guid(#20014) (Bedankt @CarloToso!) - Voeg de alias
rtoe aan de parameter-Recursevoor deGet-ChildItemopdracht (#20100) (Bedankt) @kilasuit!) - Toevoegen
LPaanLiteralPathaliassen voor functies die nog steeds ontbreken (#20820) - Impliciete lokalisatieback toevoegen aan
Import-LocalizedData(#19896) (Bedankt@chrisdent-de!) - Toevoegen
Aliasesaan de eigenschappen die worden weergegeven bij het opmaken van de Help-inhoud van de parameter die wordt geretourneerd doorGet-Help(#20994) - Toevoegen
HelpUriaanRemove-Service(#20476) - Voltooiingscrash opgelost voor de SCCM-provider (#20815, #20919, #20915) (Bedankt @MartinGC94!)
- Regressie herstellen wanneer
Get-Content-Tail 0en-Waitsamen worden gebruikt (#20734) (bedankt) @CarloToso!) - Oplossing
Start-Process -PassThruom ervoor te zorgen dat deExitCodeeigenschap toegankelijk is voor het geretourneerdeProcessobject (#20749) (Bedankt)@CodeCyclone!) - Oplossing
Group-Objectvoor het gebruik van de huidige cultuur voor de uitvoer (#20608) - Uitvoer herstellen
Group-Objectmet geïnterpoleerde tekenreeksen (#20745) (Bedankt @mawosoft!) - Weergave van
DisplayRootnetwerk herstellen (PSDrive) - Voortgang herstellen
Copy-Itemom alleen voltooid weer te geven wanneer alle bestanden worden gekopieerd (#20517) - Regressie van UNC-padvoltooiing herstellen (#20419) (Bedankt @MartinGC94!)
- Rapportfout als ongeldig
-ExecutionPolicywordt 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-Errorvan matrixwaarden oplossen (#21085) (Bedankt @jborean93!) - Oplossing
Test-ModuleManifestzodat het een UNC-pad kan gebruiken (#24115) - Oplossing
Get-TypeDataom direct naar de pijplijn te schrijven in plaats van eerst gegevens te verzamelen (#24236) (Bedankt) @MartinGC94) - Parameter toevoegen
-ForceaanResolve-PathenConvert-Pathcmdlets ter ondersteuning van verborgen jokertekens #20981 (Bedankt) @ArmaanMcleod!) - Standaardgrepen expliciet instellen bij het starten van een proces met
-NoNewWindow(#25324) - Maak geërfde beschermde interne instantieleden toegankelijk binnen de klasse-omvang. (#25547) (Bedankt @mawosoft!)
- Verwijder de oude fuzzy suggestie en corrigeer de suggestie voor de naam van het lokale scriptbestand (#25330)
- Los de methode
PSMethodInvocationConstraints.GetHashCodeop (#25306) (Dank aan @crazyjncsu!))
Engineverbeteringen
- Logboekregistratie voor .NET-methode-aanroepen verplaatsen naar wanneer de typeconversie van methodeargumenten is voltooid (#25357)
- Terugval naar AppLocker na
WldpCanExecuteFile(#25305) - 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
PSAdapteren 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
unixmodevoor afhandelingsetuidenstickywanneer 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
$PSHOMEPATH (#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 Windows-native uitvoerbare bestanden (#20402) (Bedankt @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonbehandelt 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