Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PowerShell 7.5.4 obsahuje následující funkce, aktualizace a zásadní změny. PowerShell 7.5.4 je založený na verzi .NET 9.0.306.
Úplný seznam změn najdete v protokolu CHANGELOG v úložišti GitHub. Další informace o .NET 9 naleznete v tématu Co je nového v .NET 9.
Zásadní změny
- Opravení
-OlderThana-NewerThanparametrů proTest-Pathpři použitíPathTypea rozsah dat (#20942) (Děkujeme @ArmaanMcleod!))-
-OlderThanDříve by bylo ignorováno, pokud je zadáno společně.
-
- Změna
New-FileCatalog -CatalogVersionvýchozího nastavení na 2 (#20428) (Děkujeme@ThomasNieto!) - Blokování pomoci ze síťových umístění v relacích omezené komunikace (#20593)
- Instalační služba systému Windows si teď pamatuje použité možnosti instalace a používá je k inicializaci možností pro další instalaci (#20420) (děkujeme@reduckted!)
-
ConvertTo-Jsonnyní serializujeBigIntegerjako číslo (#21000) (Díky@jborean93!)
Aktualizované moduly
PowerShell 7.5.4 obsahuje následující aktualizované moduly:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine v2.3.6
Vylepšení dokončování tabulátoru
Mnoho díky @ArmaanMcleod a ostatním za veškerou práci, aby se zlepšilo dokončování tabulátoru.
- Návrat k odvození typu, pokud nelze načíst hodnotu z bezpečného výrazu klíč-hodnota hashtable (#21184) (Děkujeme @MartinGC94!))
- Oprava regrese při odvozování typu pro
$_(#21223) (Díky@MartinGC94!) - Rozbalit
~na$HOMEve Windows s dokončováním pomocí tabulátoru (#21529) - Nedokončujte při deklarování názvu parametru a člena třídy (#21182) (Děkujeme@MartinGC94!)
- Zabránit použití záložního dokončení souboru při automatickém dokončování názvů typů pomocí tabulátoru (#20084) (Díky @MartinGC94))
- Přidejte dokončovač argumentů pro
-VersiondoSet-StrictMode(#20554) (Děkujeme @ArmaanMcleod!)) - Přidejte
-Verbdoplňovač argumentů proGet-Verb/Get-Commanda zrefaktorujteGet-Verb(#20286) (Děkujeme@ArmaanMcleod)) - Přidat
-Verbdokončovač argumentů proStart-Process(#20415) (Děkujeme @ArmaanMcleod)) - Přidejte
-Scopedokončování argumentů pro příkazy*-Variable,*-Aliasa*-PSDrive(#20451) (Děkujeme @ArmaanMcleod)) - Přidání
-Moduledokončování proSave-Help/Update-Helppříkazy (#20678) (Děkujeme @ArmaanMcleod))
Nové rutiny
- Přidejte
ConvertTo-CliXmlaConvertFrom-CliXmlcmdlety (#21063) (Děkujeme @ArmaanMcleod!)
Vylepšení webových rutin
- Oprava umožňující spolupráci
-PassThrua-Outfile(#24086) - Přidat vlastnost
OutFilevWebResponseObject(#24047) - Zobrazit název souboru v
Invoke-WebRequest -OutFile -Verbose(#24041) - Oprava WebCmdlets, když je zadáno
-Body, aleContentTypenení (#23952) (Díky @CarloToso!)) - Opravit
Invoke-WebRequestpro správné nahlášení velikosti, když je zadán-Resume(#20207) (Děkujeme, @LNKLEO!)) - Oprava webových příkazů, aby
WinFormaplikace fungovaly správně (#20606)
Další vylepšení cmdletů
- Opravte
Out-GridViewnahrazením zastaraléhoBinaryFormattervlastní implementací (#25559) - Povolit
-NoRestartpracovat sRegister-PSSessionConfiguration(#23891) - Přidejte možnosti
IgnoreCommentsaAllowTrailingCommasdo rutinyTest-Json(#23817) (Děkujeme @ArmaanMcleod!)) - Get-Help může zobrazovat parametry s atributem
ValueFromRemainingArgumentsjako připojitelné k potrubí (#23871) - Změnit typ
LineNumbernaulonginSelect-String(#24075) (Děkujeme@Snowman-25!) -
Get-Process: Odstranění požadavku na správce pro-IncludeUserName(#21302) (Děkujeme @jborean93!)) - Opravit
Test-Path -IsValidpro kontrolu neplatných znaků cesty a názvu souboru (#21358) - Přidejte
RecommendedActiondoConciseViewhlášení chyb (#20826) (Díky @JustinGrote!)) - Přidán indikátor průběhu pro
Remove-Itemrutinu (#20778) (Děkujeme @ArmaanMcleod!)) - Oprava
Test-Connectionkvůli změnám .NET 8 (#20369) - Oprava
Get-Servicechybové zprávy, která se neukončí, aby zahrnovala kategorii (#20276) - Přidání parametrů
-Emptya-InputObjectdoNew-Guid(#20014) (Děkujeme @CarloToso!)) - Přidejte alias
rk parametru-Recurseu příkazuGet-ChildItem(#20100) (Děkujeme @kilasuit!)) - Přidejte
LPdoLiteralPathaliasů pro funkce, u kterých to stále chybí (#20820) - Přidat implicitní lokalizaci pomocí náhradní hodnoty pro
Import-LocalizedData(#19896). Díky @chrisdent-de!) - Přidání
Aliasesdo vlastností zobrazených při formátování obsahu nápovědy parametru vráceného uživatelemGet-Help(#20994) - Přidat
HelpUridoRemove-Service(#20476) - Oprava pádu při dokončování pro poskytovatele SCCM (#20815, #20919, #20915) (děkujeme @MartinGC94!)
- Oprava regrese v
Get-Contentpřípadech, kdy-Tail 0a-Waitjsou použity společně (#20734) (Díky@CarloToso!) - Opravit
Start-Process -PassThru, aby byla vlastnostExitCodepřístupná pro vrácenýProcessobjekt (#20749) (Děkujeme@CodeCyclone!) - Opravte
Group-Objecttak, aby používal aktuální jazykovou verzi pro svůj výstup (#20608) - Oprava
Group-Objectvýstupu pomocí interpolovaných řetězců (#20745) (Děkujeme@mawosoft!) - Oprava vykreslení
DisplayRootsítěPSDrive(#20793) - Oprava
Copy-Itemprůběhu tak, aby se zobrazoval jako dokončený pouze tehdy, když jsou všechny soubory zkopírovány (#20517) - Oprava regrese dokončení cesty UNC (#20419) (Díky@MartinGC94!)
- Ohlásit chybu, pokud je neplatná
-ExecutionPolicypředána dopwsh(#20460) - Přidání modulů WinGetCommandNotFound a CompletionPredictor ke sledování využití (#21040)
- Přidání parametru DateKind do
ConvertFrom-Json(#20925) (Děkujeme@jborean93!) - Přidání DirectoryInfo do OutputType pro New-Item (#21126) (Díky
- Oprava
Get-Errorserializace hodnot pole (#21085) (Díky@jborean93!) - Oprava
Test-ModuleManifest, aby mohl používat cestu UNC (#24115) - Opravit
Get-TypeData, aby zapisoval do pipeline okamžitě, místo aby nejprve shromažďoval data (#24236) (Díky @MartinGC94)) - Přidejte
-Forceparametr doResolve-PathaConvert-Pathcmdletů pro podporu skrytých souborů pomocí zástupných znaků #20981 (Děkujeme @ArmaanMcleod!) - Nastavení standardních popisovačů explicitně při spuštění procesu pomocí
-NoNewWindow(#25324) - Zpřístupnit chráněné interní zděděné členy instance v oboru třídy. (#25547) (Děkujeme @mawosoft!)
- Odeberte starý nepřesný návrh a opravte návrh názvu souboru místního skriptu (#25330).
- Oprava
PSMethodInvocationConstraints.GetHashCodemetody (#25306) (Díky @crazyjncsu!)
Vylepšení motoru
- Přesuňte protokolování volání metody .NET až po dokončení potřebného převodu typu pro argumenty metody (#25357)
- Návrat do AppLockeru po
WldpCanExecuteFile(#25305) - Explicitně aktivujte a deaktivujte chybovou barvu ANSI (#24065) (Díky@JustinGrote!)
- Vylepšení definice přetížení .NET obecných metod (#21326) (Díky@jborean93!)
-
+=Optimalizace operace pro kolekci, když se jedná o pole objektů (#23901) (děkujeme@jborean93!) - Přidání telemetrie pro kontrolu konkrétních značek při importu modulu (#20371)
- Přidat
PSAdapteraConsoleGuiToolsdo seznamu povolených pro telemetrii modulu (#20641) - Přidání modulu WinGet ke sledování využití (#21040)
- Při protokolování událostí ETW WDAC (#20910) se ujistěte, že název souboru nemá hodnotu null (děkujeme)@jborean93!)
- Oprava čtyř regresí zavedených funkcí protokolování WDAC (#20913)
- Ponechte vstupní, výstupní a chybové popisovače bez nastavení, pokud nejsou přesměrovány (#20853)
- Oprava implicitních rutin proxy vzdálené komunikace pro zpracování běžných parametrů (#20367)
- Zahrnout verzi modulu do chybových zpráv, pokud modul nebyl nalezen (#20144) (Děkujeme@ArmaanMcleod!)
- Opravit
unixmodepro zpracovánísetuidasticky, když soubor není spustitelný (#20366) - Oprava použití sestavení k použití Path.Combine při vytváření cest sestavení (#21169)
- Ověřte hodnotu použití klíčového slova "namespace" během sémantických kontrol, abyste zabránili deklarování neplatných jmenných prostorů (#21162).
- Zpracovávejte globální nástroj zvláštním způsobem při přidání
$PSHOMEna začátek PATH (#24228)
Experimentální funkce
Následující experimentální funkce byly převedeny na hlavní funkce v PowerShellu 7.5-rc.1:
V PowerShellu 7.5-rc.1 jsou zahrnuty následující experimentální funkce:
- PSRedirectToVariable – Povolit přesměrování na proměnnou (#20381)
- PSNativeWindowsTildeExpansion – Přidat rozšíření tildy pro nativní spustitelné soubory ve Windows (#20402) (díky @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonnyní zachází s velkými výčty jako čísly (#20999) (Díky@jborean93!))
Vylepšení výkonu
PowerShell 7.5-rc.1 obsahoval PR#23901 z @jborean93, který zlepšuje výkon operace += pro pole objektů.
Následující příklad měří výkon pro různé metody přidání prvků do pole.
$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
}
Při spuštění skriptu v PowerShellu 7.4.6 uvidíte, že použití operátoru += je nejpomalejší metodou.
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
Při spuštění skriptu v PowerShellu 7.5-rc.1 uvidíte, že použití operátoru += je mnohem rychlejší než PowerShell 7.4.6. Teď je to také rychlejší než použití metody 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