Co nowego w programie PowerShell 7.4
Program PowerShell 7.4.7 zawiera następujące funkcje, aktualizacje i zmiany powodujące problemy z kompatybilnością. Program PowerShell 7.4.7 jest oparty na platformie .NET 8.0.12.
Aby uzyskać pełną listę zmian, zobacz CHANGELOG w repozytorium GitHub.
Zmiany powodujące niezgodność
- Obrazy Docker Nano Server nie są dostępne w tej wersji
- Dodano parametr ProgressAction do parametru Common Parameters
- Zaktualizuj niektóre interfejsy API programu PowerShell, aby zgłaszać ArgumentException zamiast ArgumentNullException, gdy argument jest pustym ciągiem (#19215) (Dziękujemy @xtqqczze!))
- Usuń kod związany z
#requires -pssnapin
(#19320) -
Test-Json
teraz używa JsonSchema.NET zamiast Newtonsoft.Json.Schema.- Dzięki tej zmianie
Test-Json
nie obsługuje już starszych schematów Wersji roboczej 4. (#18141) (Dziękujemy @gregsdennis!). Aby uzyskać więcej informacji na temat schematów JSON, zobacz dokumentację schematu JSON. Spowoduje to również przerwanieTest-Json
dla plików JSON i JSONC z komentarzami. -
ConvertFrom-Json
obsługa nadal używa biblioteki Newtonsoft.Json.Schema, co pozwala na konwertowanie plików JSON z komentarzami.
- Dzięki tej zmianie
- Dane wyjściowe z
Test-Connection
zawierają teraz bardziej szczegółowe informacje o testach połączeń TCP - Platforma .NET wprowadziła zmiany, które wpłynęły na
Test-Connection
. Polecenie cmdlet zwraca teraz błąd dotyczący konieczności używaniasudo
na platformach z systemem Linux podczas korzystania z niestandardowego rozmiaru buforu (#20369) - Funkcja eksperymentalna PSNativeCommandPreserveBytePipe jest teraz standardem. Program PowerShell zachowuje teraz dane strumienia bajtów podczas przekierowywania strumienia stdout stdout strumienia natywnego do pliku lub podczas potokowania danych strumienia bajtów do strumienia stdin polecenia natywnego.
- Zmień sposób obsługi ścieżek względnych podczas korzystania z parametru RelativeBasePath w
Resolve-Path
(#19755) (Dzięki @MartinGC94!)) - Usuń nieużywany kod PSv2 — usuwa funkcję TabExpansion (#18337)
Aktualizacje instalatora
Pakiet MSI systemu Windows udostępnia teraz opcję wyłączenia telemetrii programu PowerShell podczas instalacji. Aby uzyskać więcej informacji, zobacz Instalowanie pakietu msi z linii poleceń.
Zaktualizowane wersje PSResourceGet i PSReadLine
PowerShell 7.4 zawiera Microsoft.PowerShell.PSResourceGet w wersji 1.0.1. Ten moduł jest instalowany równolegle z modułem PowerShellGet w wersji 2.2.5 i PackageManagement w wersji 1.4.8.1. Aby uzyskać więcej informacji, zobacz dokumentację Microsoft.PowerShell.PSResourceGet.
Program PowerShell 7.4 zawiera teraz PSReadLine 2.3.4. Aby uzyskać więcej informacji, zobacz dokumentację PSReadLine.
Ulepszenia uzupełniania kart
Bardzo dziękuję @MartinGC94 i innym osobom za ich pracę nad ulepszaniem uzupełniania tabulacji.
- Naprawiono problem podczas ukończenia pierwszego polecenia w skrypcie z pustym wyrażeniem tablicy (#18355)
- Naprawiono uzupełnianie argumentu pozycyjnego (#17796)
- Określanie priorytetów domyślnego zestawu parametrów podczas kończenia argumentów pozycyjnych (#18755)
- Ulepszanie powiązania pseudo dla parametrów dynamicznych (#18030)
- Ulepszanie wnioskowania typu kluczy tabeli skrótów (#17907)
- Naprawiono błąd wnioskowania typu dla pustych instrukcji zwracanych (#18351)
- Ulepszanie wnioskowania typów dla Get-Random (#18972)
- Poprawiono wnioskowanie typu dla wszystkich zmiennych zakresu (#18758)
- Ulepsz wyliczanie wywnioskowanych typów w potoku (#17799)
- Dodaj uzupełnianie wartości w porównaniach podczas porównywania Enumów (#17654)
- Dodanie uzupełnienia przypisania właściwości dla enumów (#19178)
- Naprawiono uzupełnianie właściwości zmiennej PSCustomObject (, #18682,)
- Poprawiono uzupełnianie składnika w argumencie atrybutu (#17902)
- Wyklucz nadmiarowe aliasy parametrów z wyników ukończenia (#19382)
- Naprawiono uzupełnianie składowych klasy dla klas z typami podstawowymi (#19179)
- Dodawanie uzupełniania dla słów kluczowych 'Using keywords' (#16514)
- Napraw przeciek zmiennej TabExpansion2 podczas uzupełniania zmiennych (#18763)
- Włącz uzupełnianie zmiennych w zakresach ScriptBlock (#19819)
- Naprawiono uzupełnianie zmiennej instrukcji foreach (#19814)
- Poprawiono pierwszeństwo wnioskowania typu zmiennej (#18691)
- Naprawiono uzupełnianie składowych dla klasy enum programu PowerShell (#19740)
- Naprawiono analizowanie literałów tablicowych w wyrażeniach indeksu w wywołaniach metod (#19224)
- Ulepszanie ukończenia ścieżki (#19489)
- Naprawiono błąd indeksowania poza zakresem w CompleteInput dla pustego wejścia skryptu (#19501)
- Zwiększanie wydajności uzupełniania zmiennych (#19595)
- Poprawa uzupełniania kluczy tabel skrótów dla przypisywania zmiennych z ograniczeniami typów, zagnieżdżonych tabel skrótów i nie tylko (#17660)
- Interpretacja danych wyjściowych aplikacji zewnętrznych jako ciągów (#19193)
- Aktualizowanie uzupełniania parametrów dla wyliczeń, aby wykluczyć wartości niedozwolone przez atrybuty
ValidateRange
(#17750) (Dzięki @fflaten!). - Naprawiono uzupełnianie parametrów dynamicznych (#19510)
- Dodaj uzupełnianie dla zmiennych przypisanych przez polecenie Data (#19831)
- Popraw rozszerzanie tyldy (
~
) w systemach Windows do$home
, aby zapobiec problemom z używaniem za pomocą rodzimych poleceń (#21529).
Ulepszenia poleceń cmdlet sieci Web
Serdeczne podziękowania @CarloToso i innym za pracę nad ulepszaniem cmdletów sieci Web.
- Napraw dekompresję w poleceniach cmdlet dotyczących sieci Web, aby dodać obsługę Brotli (#17955) (podziękowania dla @iSazonov!))
- Webcmdlets dodaje 308 do kodów przekierowania i drobnych poprawek (#18536)
- Ukończ renderowanie paska postępu w Invoke-WebRequest po zakończeniu lub anulowaniu pobierania (#18130)
- Polecenia cmdletów sieci Web pobierają interwał po z nagłówków odpowiedzi, jeśli kod stanu wynosi 429 (#18717)
- Polecenia cmdlet sieci Web ustawiają domyślne kodowanie zestawu znaków na wartość UTF8 (#18219)
- Zachowaj wartość WebSession.MaximumRedirection przed zmianami (#19190)
- Polecenie WebCmdlets analizuje deklarację XML, aby uzyskać wartość kodowania, jeśli jest ona obecna. (#18748)
- Poprawka przy użyciu -Body xml w poleceniach webcmdlets bez kodowania (#19281)
- Dostosuj zachowanie metody PUT na POST dla domyślnego typu zawartości w WebCmdlets (#19152)
- Weź pod uwagę atrybut ContentType z nagłówków w WebCmdlets (#19227)
- Zezwalaj na zachowanie oryginalnej metody HTTP przez dodanie -PreserveHttpMethodOnRedirect do poleceń cmdlet sieci Web (#18894)
- Polecenia Webcmdlets wyświetlają błąd przy przekierowaniu z https do http (#18595)
- Dodawanie przełącznika AllowInsecureRedirect do poleceń cmdlet sieci Web (#18546)
- Popraw rozbudowany komunikat w poleceniach cmdletów sieci Web, gdy długość zawartości jest nieznana (#19252)
- Skompiluj względny identyfikator URI dla linków z odpowiedzi w
Invoke-WebRequest
(#19092) - Napraw przekierowanie dla
-CustomMethod POST
w WebCmdlets (#19111) - Usuwanie poprzedniej odpowiedzi w usłudze Webcmdlets (#19117)
- Popraw format błędów XML i JSON
Invoke-WebRequest
(#18837) - Dodawanie parametrów ValidateNotNullOrEmpty do OutFile i InFile parametrów webCmdlets (#19044)
- HttpKnownHeaderNames aktualizuje listę nagłówków (#18947)
-
Invoke-RestMethod -FollowRelLink
naprawić łącza zawierające przecinki (#18829) - Napraw usterkę dotyczącą zarządzania przekierowaniem i funkcją KeepAuthorization w cmdlet Web (#18902)
- Dodawanie StatusCode do HttpResponseException (#18842)
- Obsługa trwałych połączeń HTTP w poleceniach cmdlet w sieci Web (#19249) (dzięki @stevenebutler!))
- Małe czyszczenie
Invoke-RestMethod
(#19490) - Popraw szczegółowy komunikat WebCmdlets, aby wyświetlić poprawną wersję protokołu HTTP (#19616)
- Dodawanie FileNameStar do MultipartFileContent w funkcji WebCmdlets (#19467)
- Napraw statusy HTTP z 409 na 429 dla WebCmdlets, aby uzyskać interwał ponawiania prób z nagłówka Retry-After. (#19622) (Dzięki @mkht!)
- Zmień
-TimeoutSec
na-ConnectionTimeoutSeconds
i dodaj-OperationTimeoutSeconds
do poleceń cmdlet sieci Web (#19558) (Dzięki @stevenebutler!) inne polecenia cmdlet) - Obsługa Ctrl+c podczas zawieszenia się połączenia przy odczytywaniu danych w poleceniach WebCmdlets (#19330) (Dzięki @stevenebutler!))
- Obsługa gniazda domeny systemu Unix w usłudze WebCmdlets (#19343)
Inne ulepszenia cmdletów
-
Test-Connection
teraz zwraca błąd dotyczący konieczności używaniasudo
na platformach z systemem Linux podczas korzystania z niestandardowego rozmiaru buforu (#20369) - Dodaj typy danych wyjściowych do poleceń formatowania (#18746) (Dzięki @MartinGC94!))
- Dodaj atrybuty typu wyjściowego dla
Get-WinEvent
(#17948) (Dzięki @MartinGC94!)) - Dodawanie parametrów i LiteralPath do polecenia cmdlet
Test-Json
(#19042) (Dzięki @ArmaanMcleod!)) - Dodawanie parametru NoHeader do poleceń cmdlet
ConvertTo-Csv
iExport-Csv
(#19108) (Dzięki @ArmaanMcleod!) - Dodaj parametry Confirm i WhatIf do
Stop-Transcript
(#18731) (Dzięki @JohnLBevan!) - Dodaj parametr FuzzyMinimumDistance do
Get-Command
(#18261) -
Parametr kodowania umożliwia użycie kodowania
ANSI
w programie PowerShell (#19298) (Dzięki @CarloToso!) - Dodaj postęp do
Copy-Item
(#18735) -
Update-Help
teraz zgłasza błąd podczas korzystania z niejawnej kultury w systemach innych niż USA. (#17780) (Dzięki @dkaszews!) - Nie wymagaj działania podczas tworzenia ukończonego rekordu postępu (#18474) (Dzięki @MartinGC94!)
- Nie zezwalaj na ujemne wartości dla parametrów polecenia cmdlet
Get-Content
,-Head
i-Tail
(#19715) (Dzięki @CarloToso!)) - Upewnij się, że
Update-Help
zgłasza odpowiedni błąd, gdy bieżąca kultura nie jest skojarzona z językiem (#19765) (Podziękowania dla @josea!)) - Zezwól na łączenie parametrów
-Skip
i-SkipLast
w cmdletSelect-Object
. (#18849) (Dzięki @ArmaanMcleod!) - Dodaj polecenie cmdlet
Get-SecureRandom
(#19587) -
Set-Clipboard -AsOSC52
do zdalnego użycia (#18222) (Dzięki @dkaszews!) - Przyspiesz rozpoznawanie ścieżek względnych
Resolve-Path
(#19171) (Dzięki @MartinGC94!)) - Dodano parametr przełącznika
-CaseInsensitive
do poleceń cmdletSelect-Object
iGet-Unique
(#19683) (Dzięki @ArmaanMcleod!) -
Restart-Computer
iStop-Computer
powinny zgłosić błąd, gdy nie są uruchamiane bez użycia komendy sudo w systemie Unix (#19824)
Ulepszenia silnika
Aktualizacje $PSStyle
- Dodaje właściwości Dim i DimOff (#18653)
- Dodano metody statyczne do klasy PSStyle, które mapują wartości ConsoleColor dla pierwszego planu i tła na sekwencje znaków sterujących ANSI (#17938)
- Nagłówki tabeli dla pól obliczeniowych są domyślnie formatowane kursywą
- Dodano obsługę poszanowania
$PSStyle.OutputRendering
na hoście zdalnym (#19601) - Zaktualizowane dane telemetryczne w celu uwzględnienia użycia modułów
CrescendoBuilt
(#20371)
Inne aktualizacje silnika
- Upewnij się, że klasa programu PowerShell nie jest powiązana z elementem Runspace podczas deklarowania atrybutu
NoRunspaceAffinity
(#18138) - Dodaj atrybut
ValidateNotNullOrWhiteSpace
(#17191) (Dzięki @wmentha!) - Dodaj
sqlcmd
do listy w celu przekazywania starszych argumentów (#18559) - Dodać funkcję
cd~
(#18308) (Dzięki @GigaScratch!)) - Popraw parsowanie typów tablic w typach ogólnych (#19205) (Dzięki @MartinGC94!))
- Naprawa mask wyrażeń w katalogu głównym ścieżek urządzenia (#19442) (Dzięki @MartinGC94!)
- Dodaj publiczny interfejs API do pobierania lokalizacji elementów PSModulePath (#19422)
- Naprawiono niepoprawną konwersję typu ciągu (#19560) (Dzięki @MartinGC94!))
- Naprawiono powolne działanie, gdy jest używanych wiele punktów przerwania (#14953) (Dzięki @nohwnd!))
- Usuń kod związany z
#requires -pssnapin
(#19320)
Funkcje eksperymentalne
Program PowerShell 7.4 wprowadza następujące funkcje eksperymentalne:
-
PSFeedbackProvider — zastępuje ustaloną strukturę sugestii rozszerzalnym dostawcą opinii.
- Ta funkcja dodaje również właściwości FeedbackName, FeedbackTexti FeedbackAction do
$PSStyle.Formatting
, które umożliwiają zmianę formatowania komunikatów opinii.
- Ta funkcja dodaje również właściwości FeedbackName, FeedbackTexti FeedbackAction do
- PSModuleAutoLoadSkipOfflineFiles — odnajdywanie modułów pomija teraz pliki oznaczone przez dostawców chmury jako nie w pełni na dysku.
- PSCommandWithArgs — dodaj wsparcie dla przekazywania argumentów do poleceń jako jeden ciąg znaków
Następujące funkcje eksperymentalne stały się głównym nurtem:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
Program PowerShell 7.4 zmienił następujące funkcje eksperymentalne:
- PSCommandNotFoundSuggestion — ta funkcja korzysta teraz z rozszerzalnego dostawcy informacji zwrotnej, a nie z góry określonych sugestii (#18726)
Aby uzyskać więcej informacji na temat funkcji eksperymentalnych, zobacz Using Experimental Features.