Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Program PowerShell 7.5.4 zawiera następujące funkcje, aktualizacje i zmiany powodujące niezgodność. Program PowerShell 7.5.4 jest oparty na wersji .NET 9.0.306.
Aby uzyskać pełną listę zmian, zobacz CHANGELOG w repozytorium GitHub. Aby uzyskać więcej informacji na temat platformy .NET 9, zobacz Co nowego na platformie .NET 9.
Zmiany powodujące niezgodność
- Napraw
-OlderThani-NewerThanparametry dlaTest-Path, kiedy używa sięPathTypeoraz zakresu dat (#20942). Dzięki @ArmaanMcleod!)- Poprzednio
-OlderThanbyło ignorowane, jeśli określono jednocześnie.
- Poprzednio
- Zmień
New-FileCatalog -CatalogVersionwartość domyślną na 2 (#20428) (Dziękujemy)@ThomasNieto!) - Blokuj uzyskiwanie pomocy z lokalizacji sieciowych w ograniczonych sesjach zdalnych (#20593)
- Instalator Windows zapamiętuje teraz używane opcje instalacji i używa ich do inicjowania opcji następnej instalacji (#20420) (Dzięki@reduckted!)
-
ConvertTo-Jsonteraz serializujeBigIntegerjako liczbę (#21000) (dzięki@jborean93!)
Zaktualizowane moduły
Program PowerShell 7.5.4 zawiera następujące zaktualizowane moduły:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine w wersji 2.3.6
Ulepszenia uzupełniania kart
Serdeczne podziękowania dla @ArmaanMcleod i innych osób za całą ich pracę nad ulepszeniem automatycznego uzupełniania zakładek.
- Zastosuj wnioskowanie typu, gdy nie można uzyskać dostępu do wartości klucza w tablicy skrótów z bezpiecznego wyrażenia (#21184) (Dzięki @MartinGC94!)
- Napraw regresję podczas wnioskowania typu dla
$_(#21223) (Dzięki @MartinGC94!) - Rozwiń
~do$HOMEw systemie Windows z uzupełnianiem za pomocą tabulatora (#21529) - Nie uzupełniaj podczas deklarowania nazwy parametru i składowej klasy (#21182) (Dzięki @MartinGC94!)
- Zapobiegaj domyślnemu uzupełnianiu nazw plików przy użyciu klawisza tabulatora podczas uzupełniania nazw typów (#20084) (Dziękujemy@MartinGC94))
- Dodanie uzupełniacza argumentów do
-VersiondlaSet-StrictMode(#20554) (Dziękujemy @ArmaanMcleod!)) - Dodaj
-Verbnarzędzie do uzupełniania argumentów dlaGet-Verb/Get-Commandi zrefaktoryzujGet-Verb(#20286) (dzięki @ArmaanMcleod)) - Dodaj
-Verbuzupełniacz argumentu dlaStart-Process(#20415) (Dzięki @ArmaanMcleod)) - Dodaj
-Scopemoduł uzupełniania argumentów dla poleceń*-Variable,*-Aliasi*-PSDrive(#20451) (Dziękujemy @ArmaanMcleod)) - Dodaj
-Moduleuzupełnianie dla poleceńSave-Help/Update-Help(#20678) (Dziękujemy @ArmaanMcleod))
Nowe polecenia cmdlet
- Dodaj
ConvertTo-CliXmliConvertFrom-CliXmlpolecenia cmdlet (#21063) (Dzięki @ArmaanMcleod!))
Ulepszenia poleceń cmdlet sieci Web
- Poprawka umożliwiająca współdziałanie
-PassThrui-Outfile(#24086) - Dodaj właściwość
OutFilewWebResponseObject(#24047) - Pokaż nazwę pliku w
Invoke-WebRequest -OutFile -Verbose(#24041) - Napraw WebCmdlets, gdy
-Bodyjest określony, aleContentTypenie jest (#23952) (Dziękujemy @CarloToso!)) - Popraw
Invoke-WebRequest, aby raportować poprawny rozmiar, gdy-Resumejest określony (#20207) (Dzięki @LNKLEO!)) - Naprawianie poleceń cmdlet sieci Web w celu umożliwienia poprawnej
WinFormpracy aplikacji (#20606)
Inne ulepszenia poleceń cmdlet
- Popraw
Out-GridView, zastępując przestarzałeBinaryFormatterimplementacją niestandardową (#25559) - Włącz
-NoRestartdo pracy zRegister-PSSessionConfiguration(#23891) - Dodaj opcje
IgnoreCommentsiAllowTrailingCommasdo polecenia cmdletTest-Json(#23817) (dzięki @ArmaanMcleod!)) - Polecenie Get-Help może zgłaszać parametry z atrybutem
ValueFromRemainingArgumentsjako możliwe do przesyłania w potoku (#23871) - Zmień typ
LineNumbernaulongwSelect-String(#24075) (Dziękujemy@Snowman-25!)) -
Get-Process: Usuń wymaganie administratora dla-IncludeUserName(#21302) (Dziękujemy@jborean93!) - Popraw
Test-Path -IsValid, aby sprawdzić nieprawidłowe znaki ścieżki i nazwy pliku (#21358) - Dodaj
RecommendedActiondoConciseViewraportowania błędów (#20826) dzięki @JustinGrote!) - Dodano pasek postępu dla
Remove-Itempolecenia cmdlet (#20778) (Dziękujemy)@ArmaanMcleod!) - Poprawka
Test-Connectionspowodowana zmianami platformy .NET 8 (#20369) - Napraw
Get-Serviceniekończący się komunikat o błędzie, aby dodać kategorię (#20276) - Dodaj parametr
-Emptyi-InputObjectdoNew-Guid(#20014) (Dzięki @CarloToso!)) - Dodaj alias
rdo parametru-RecurseGet-ChildItemdla polecenia (#20100) (Dzięki@kilasuit!) - Dodaj
LPdoLiteralPathaliasów dla funkcji, które nadal nie mają tych aliasów (#20820) - Dodaj niejawną lokalizację rezerwową do
Import-LocalizedData(#19896) (Dzięki @chrisdent-de!)) - Dodaj
Aliasesdo właściwości, które są wyświetlane podczas formatowania treści pomocy dotyczącej parametru zwróconego przezGet-Help(#20994) - Dodaj
HelpUridoRemove-Service(#20476) - Napraw awarię uzupełniania dla dostawcy SCCM (#20815, #20919, #20915) (Dziękujemy @MartinGC94!))
- Naprawa regresji w
Get-Content, gdy-Tail 0i-Waitsą używane razem (#20734) dzięki @CarloToso!) - Popraw
Start-Process -PassThru, aby upewnić się, że właściwośćExitCodejest dostępna dla zwróconego obiektuProcess(#20749) (Dzięki @CodeCyclone!)) - Poprawka
Group-Objectsłużąca do używania bieżącej kultury dla danych wyjściowych (#20608) - Napraw
Group-Objectdane wyjściowe przy użyciu ciągów interpolowanych (#20745) (Dzięki @mawosoft!)) - Napraw renderowanie
DisplayRootdla sieciPSDrive(#20793) - Popraw
Copy-Itempostęp tak, aby pokazywał zakończenie tylko po skopiowaniu wszystkich plików (#20517) - Napraw regresję ukończenia ścieżki UNC (#20419) (dzięki@MartinGC94!)
- Zgłoś błąd, jeśli jest przekazywany nieprawidłowy
-ExecutionPolicydopwsh(#20460) - Dodawanie modułów WinGetCommandNotFound i CompletionPredictor w celu śledzenia użycia (#21040)
- Dodaj parametr DateKind do (
ConvertFrom-Json#20925) (Dziękujemy)@jborean93!) - Dodawanie informacji o katalogu do parametru OutputType dla nowego elementu (#21126) (dziękujemy)@MartinGC94!)
- Napraw
Get-Errorserializację wartości tablicy (#21085) (Dzięki @jborean93!) - Poprawka
Test-ModuleManifestumożliwiająca używanie ścieżki UNC (#24115) - Poprawka
Get-TypeDatado natychmiastowego zapisywania do potoku zamiast zbierania najpierw danych (#24236) (dzięki @MartinGC94) - Dodaj
-Forceparametr do poleceń cmdletResolve-PathiConvert-Pathw celu obsługi ukrytych plików z użyciem symboli wieloznacznych #20981 (dzięki @ArmaanMcleod!) - Ustawianie standardowych dojść jawnie podczas uruchamiania procesu za pomocą
-NoNewWindowprogramu (#25324) - Umożliwia dostęp do dziedziczonej składowej wystąpienia wewnętrznego chronionego w zakresie klas. (#25547) (Dzięki @mawosoft!)
- Usuń niedoprecyzowaną starą sugestię i napraw sugestię nazwy pliku skryptu lokalnego (#25330)
- Naprawiono metodę
PSMethodInvocationConstraints.GetHashCode(#25306) (Dzięki @crazyjncsu!)
Ulepszenia silnika
- Przenieś rejestrowanie wywołań metod platformy .NET po zakończeniu wymaganej konwersji typu dla argumentów metody (#25357)
- Powrót do funkcji AppLocker po
WldpCanExecuteFile(#25305) - Jawnie uruchom i zatrzymaj kolor błędu ANSI (#24065) (Dziękujemy@JustinGrote!))
- Popraw definicję przeciążenia metod generycznych .NET (#21326) (Dzięki)
- Zoptymalizuj operację
+=dla kolekcji, gdy jest to tablica obiektów (#23901) (Dzięki@jborean93!) - Dodawanie telemetrii w celu sprawdzenia określonych tagów podczas importowania modułu (#20371)
- Dodaj
PSAdapteriConsoleGuiToolsdo listy dozwolonych danych telemetrycznych modułu ładowania (#20641) - Dodawanie modułu WinGet w celu śledzenia użycia (#21040)
- Upewnij się, że nazwa pliku nie ma wartości null podczas rejestrowania zdarzeń WDAC ETW (#20910) (Dzięki@jborean93!)
- Naprawiono cztery regresje wprowadzone przez funkcję rejestrowania WDAC (#20913)
- Pozostaw niezastawioną obsługę danych wejściowych, wyjściowych i błędów, gdy nie są przekierowywane (#20853)
- Napraw niejawne polecenia cmdlet zdalnego serwera proxy, aby działały na typowych parametrach (#20367)
- Dołącz wersję modułu w komunikatach o błędach, gdy moduł nie zostanie znaleziony (#20144) (dziękujemy)@ArmaanMcleod!)
- Popraw
unixmodedo obsługisetuidisticky, kiedy plik nie jest wykonywalny (#20366) - Poprawka przy użyciu zestawu do używania metody Path.Combine podczas konstruowania ścieżek zestawów (#21169)
- Zweryfikuj wartość przestrzeni nazw podczas kontroli semantycznych, aby zapobiec deklarowaniu nieprawidłowych przestrzeni nazw (#21162)
- Obsługa narzędzia globalnego specjalnie podczas dołączania
$PSHOMEdo PATH (#24228)
Funkcje eksperymentalne
Następujące funkcje eksperymentalne zostały przekonwertowane na funkcje podstawowe w programie PowerShell 7.5-rc.1:
W programie PowerShell 7.5-rc.1 znajdują się następujące funkcje eksperymentalne:
- PSRedirectToVariable — zezwalaj na przekierowywanie do zmiennej (#20381)
- PSNativeWindowsTildeExpansion — dodawanie rozszerzenia tyldy dla plików wykonywalnych natywnych dla systemu Windows (#20402) (Dzięki @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsontraktuje teraz duże wyliczenia jako liczby (#20999) (Dzięki@jborean93!)
Ulepszenia wydajności
Program PowerShell 7.5-rc.1 zawierał żądanie ściągnięcia nr 23901 z @jborean93, który poprawia wydajność operacji += dla tablicy obiektów.
Poniższy przykład mierzy wydajność w przypadku różnych metod dodawania elementów do tablicy.
$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
}
Po uruchomieniu skryptu w programie PowerShell 7.4.6 zobaczysz, że użycie operatora += jest najwolniejszą metodą.
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
Po uruchomieniu skryptu w programie PowerShell 7.5-rc.1 zobaczysz, że użycie operatora += jest znacznie szybsze niż program PowerShell 7.4.6. Teraz jest ona również szybsza niż użycie 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