Co nowego w programie PowerShell 7.4

Program PowerShell 7.4 zawiera następujące funkcje, aktualizacje i zmiany powodujące niezgodność. Program PowerShell 7.4 jest oparty na platformie .NET 8.0.0.

Aby uzyskać pełną listę zmian, zobacz CHANGELOG w repozytorium GitHub.

Zmiany powodujące niezgodność

  • Obrazy platformy Docker serwera Nano Server nie są dostępne w tej wersji
  • Dodano parametr ProgressAction do typowych parametrów
  • Zaktualizuj niektóre interfejsy API programu PowerShell, aby zgłaszać wyjątek ArgumentException zamiast argumentu ArgumentNullException, gdy argument jest pustym ciągiem (#19215) (dzięki@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ęki @gregsdennis!) Aby uzyskać więcej informacji na temat schematów JSON, zobacz dokumentację schematu JSON.
  • Dane wyjściowe z Test-Connection tej pory zawierają bardziej szczegółowe informacje o testach połączeń TCP
  • Platforma .NET wprowadziła zmiany, których dotyczy problem Test-Connection. Polecenie cmdlet zwraca teraz błąd dotyczący konieczności użycia sudo na platformach z systemem Linux podczas korzystania z niestandardowego rozmiaru buforu (#20369)
  • Funkcja eksperymentalna PSNativeCommandPreserveBytePipe jest teraz głównym nurtem. Program PowerShell zachowuje teraz dane strumienia bajtów podczas przekierowywania strumienia stdout polecenia natywnego do pliku lub podczas potokowania danych strumienia bajtów do strumienia stdin polecenia natywnego.
  • Zmienianie sposobu obsługi ścieżek względnych w Resolve-Path programie podczas korzystania z parametru RelativeBasePath (#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 wiersza polecenia.

Zaktualizowane wersje polecenia PSResourceGet i PSReadLine

Program PowerShell 7.4 zawiera element 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ę dotyczącą polecenia Microsoft.PowerShell.PSResourceGet.

Program PowerShell 7.4 zawiera teraz program PSReadLine w wersji 2.3.4. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą elementu PSReadLine.

Ulepszenia uzupełniania kart

Wiele dzięki @MartinGC94 i innym osobom za całą swoją pracę w celu ulepszenia ukończenia karty.

  • Rozwiązano problem podczas wykonywania pierwszego polecenia w skrycie przy użyciu pustego wyrażenia tablicy (#18355)
  • Naprawiono uzupełnianie argumentów pozycyjnych (#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 funkcji Get-Random (#18972)
  • Poprawiono wnioskowanie typu dla wszystkich zmiennych zakresu (#18758)
  • Ulepszanie wyliczania wywnioskowanych typów w potoku (#17799)
  • Dodawanie uzupełniania wartości w porównaniach podczas porównywania wyliczenia (#17654)
  • Dodawanie uzupełniania przypisania właściwości dla wyliczenia (#19178)
  • Naprawiono uzupełnianie właściwości zmiennej PSCustomObject (#18682)
  • Poprawiono uzupełnianie elementu członkowskiego 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 polecenia Using keywords (#16514)
  • Napraw przeciek zmiennej TabExpansion2 podczas kończenia zmiennych (#18763)
  • Włączanie uzupełniania zmiennych w zakresach ScriptBlock (#19819)
  • Naprawiono uzupełnianie zmiennej instrukcji foreach (#19814)
  • Naprawianie pierwszeństwa wnioskowania typu zmiennej (#18691)
  • Naprawiono uzupełnianie składowych dla klasy enum programu PowerShell (#19740)
  • Naprawiono analizowanie literałów tablicy w wyrażeniach indeksu w wywołaniach metod (#19224)
  • Ulepszanie ukończenia ścieżki (#19489)
  • Naprawiono błąd indeksowania poza powiązanym elementem CompleteInput dla pustych danych wejściowych skryptu (#19501)
  • Zwiększanie wydajności uzupełniania zmiennych (#19595)
  • Ulepszanie uzupełniania klucza tabeli skrótu dla przypisań zmiennych ograniczonych typów, zagnieżdżonych tabel skrótów i nie tylko (#17660)
  • Wnioskowanie danych wyjściowych aplikacji zewnętrznych jako ciągów (#19193)
  • Aktualizowanie uzupełniania parametrów dla wyliczenia wykluczania wartości niedozwolonych przez ValidateRange atrybuty (#17750) (dzięki @fflaten!).
  • Naprawianie uzupełniania parametrów dynamicznych (#19510)
  • Dodawanie uzupełniania zmiennych przypisanych przez instrukcję Data (#19831)

Ulepszenia poleceń cmdlet sieci Web

Wiele dzięki @CarloToso i innym osobom za pracę nad ulepszaniem poleceń cmdlet sieci Web.

  • Napraw dekompresję w poleceniach cmdlet sieci Web w celu uwzględnienia elementu Brotli (#17955) (dzięki@iSazonov!)
  • Polecenia Webcmdlets dodają 308 do kodów przekierowania i małego czyszczenia (#18536)
  • Ukończ renderowanie paska postępu w obszarze Invoke-WebRequest po zakończeniu lub anulowaniu pobierania (#18130)
  • Polecenia cmdlet sieci Web pobierają interwał ponawiania prób z nagłówków odpowiedzi, jeśli kod stanu to 429 (#18717)
  • Polecenia cmdlet sieci Web ustawiają domyślne kodowanie zestawu znaków na UTF8 (#18219)
  • Zachowaj wartość WebSession.MaximumRedirection ze zmian (#19190)
  • Polecenie WebCmdlets analizuje deklarację XML, aby uzyskać wartość kodowania, jeśli jest obecna. (#18748)
  • Poprawka przy użyciu kodu XML -Body w poleceniach webcmdlets bez kodowania (#19281)
  • Dostosuj zachowanie metody PUT na POST dla domyślnego typu zawartości w webCmdlets (#19152)
  • Weź pod uwagę właściwość ContentType z nagłówków w poleceniach WebCmdlets (#19227)
  • Zezwalaj na zachowanie oryginalnej metody HTTP przez dodanie parametru -PreserveHttpMethodOnRedirect do poleceń cmdlet sieci Web (#18894)
  • Polecenia Webcmdlets wyświetlają błąd na stronie https do przekierowania http (#18595)
  • Dodawanie przełącznika AllowInsecureRedirect do poleceń cmdlet sieci Web (#18546)
  • Ulepszanie pełnej wiadomości w poleceniach cmdlet sieci Web, gdy długość zawartości jest nieznana (#19252)
  • Skompiluj względny identyfikator URI dla linków z odpowiedzi w pliku Invoke-WebRequest (#19092)
  • Naprawianie przekierowania dla elementu -CustomMethod POST WebCmdlets (#19111)
  • Usuwanie poprzedniej odpowiedzi w funkcji Webcmdlets (#19117)
  • Ulepszanie Invoke-WebRequest formatu błędów xml i json (#18837)
  • Dodaj parametry ValidateNotNullOrEmpty do parametrów OutFile i InFile webCmdlets (#19044)
  • Lista nagłówków aktualizacji HttpKnownHeaderNames (#18947)
  • Invoke-RestMethod -FollowRelLink naprawianie łączy zawierających przecinki (#18829)
  • Usunięto usterkę dotyczącą zarządzania przekierowaniem i funkcją KeepAuthorization w poleceniach cmdlet sieci Web (#18902)
  • Dodawanie kodu stanu do elementu HttpResponseException (#18842)
  • Obsługa połączeń trwałych HTTP w poleceniach cmdlet sieci Web (#19249) (dzięki@stevenebutler!)
  • Invoke-RestMethod Oczyszczanie małe (#19490)
  • Popraw pełny komunikat webCmdlets, aby wyświetlić poprawną wersję PROTOKOŁU HTTP (#19616)
  • Dodawanie elementu FileNameStar do funkcji MultipartFileContent w elemencie WebCmdlets (#19467)
  • Naprawiono stan HTTP z zakresu od 409 do 429 dla poleceń WebCmdlets, aby uzyskać interwał ponawiania prób z nagłówka Ponów próbę po. (#19622) (Dziękujemy)@mkht!)
  • Zmień -TimeoutSec na i dodaj -OperationTimeoutSeconds do -ConnectionTimeoutSeconds poleceń cmdlet sieci Web (#19558) (Dzięki @stevenebutler!) innym poleceniom cmdlet)
  • Obsługa klawiszy Ctrl+c, gdy połączenie zawiesza się podczas odczytywania danych w poleceniach WebCmdlets (#19330) (Dzięki@stevenebutler!)
  • Obsługa gniazda domeny systemu Unix w elemencie WebCmdlets (#19343)

Inne ulepszenia poleceń cmdlet

  • Test-Connection Teraz zwraca błąd dotyczący konieczności użycia sudo na platformach z systemem Linux w przypadku używania niestandardowego rozmiaru buforu (#20369)
  • Dodawanie typów danych wyjściowych do poleceń formatowania (#18746) (dzięki@MartinGC94!)
  • Dodawanie atrybutów typu danych wyjściowych dla elementu Get-WinEvent (#17948) (Dziękujemy)@MartinGC94!)
  • Dodawanie parametrów Path i LiteralPath do Test-Json polecenia cmdlet (#19042) (Dziękujemy)@ArmaanMcleod!)
  • Dodawanie parametru NoHeader do ConvertTo-Csv poleceń cmdlet i Export-Csv (#19108) (dziękujemy)@ArmaanMcleod!)
  • Dodawanie parametrów Confirm and WhatIf do Stop-Transcript(#18731) (Dziękujemy)@JohnLBevan!)
  • Dodaj parametr FuzzyMinimumDistance do (Get-Command#18261)
  • Udostępnij parametr kodowania w programie ANSI PowerShell (#19298) (Dzięki@CarloToso!)
  • Dodawanie postępu do (Copy-Item#18735)
  • Update-Help teraz zgłasza błąd podczas korzystania z niejawnej kultury w systemach innych niż USA. (#17780) (Podziękowania@dkaszews!)
  • Nie wymagaj działania podczas tworzenia ukończonego rekordu postępu (#18474) (Dzięki@MartinGC94!)
  • Nie zezwalaj na wartości ujemne dla Get-Content parametrów -Head polecenia cmdlet i -Tail (#19715) (Dziękujemy)@CarloToso!)
  • Zgłaszaj Update-Help prawidłowy błąd, gdy bieżąca kultura nie jest skojarzona z językiem (#19765) (Dziękujemy@josea!)
  • Zezwalaj na łączenie parametrów -Skip i -SkipLast w poleceniu Select-Object cmdlet. (#18849) (Podziękowania@ArmaanMcleod!)
  • Dodaj Get-SecureRandom polecenie cmdlet (#19587)
  • Set-Clipboard -AsOSC52dla zdalnego użycia (#18222) (Dziękujemy@dkaszews!)
  • Przyspieszanie Resolve-Path rozdzielczości ścieżki względnej (#19171) (Dzięki@MartinGC94!)
  • Dodano parametr switch do Select-Object poleceń -CaseInsensitive cmdlet i Get-Unique (#19683) (Dziękujemy)@ArmaanMcleod!)
  • Restart-Computer i Stop-Computer powinien zakończyć się niepowodzeniem z powodu błędu, gdy nie działa za pośrednictwem polecenia sudo w systemie Unix (#19824)

Ulepszenia aparatu

Aktualizacje do$PSStyle

  • Dodaje właściwości Dim i DimOff (#18653)
  • Dodano metody statyczne do klasy PSStyle, która mapuje wartości consolecolor pierwszego planu i tła na sekwencje ucieczki ANSI (#17938)
  • Nagłówki tabeli dla pól obliczeniowych są domyślnie formatowane kursywą
  • Dodano obsługę przestrzegania $PSStyle.OutputRendering na hoście zdalnym (#19601)
  • Zaktualizowane dane telemetryczne w celu uwzględnienia użycia modułów CrescendoBuilt (#20371)

Inne aktualizacje aparatu

  • Upewnij się, że klasa programu PowerShell nie jest powiązana z elementem Runspace podczas deklarowania atrybutu NoRunspaceAffinity (#18138)
  • ValidateNotNullOrWhiteSpace Dodaj atrybut (#17191) (Dziękujemy)@wmentha!)
  • Dodaj sqlcmd do listy dla przekazywania starszych argumentów (#18559)
  • Dodaj funkcję cd~ (#18308) (Dzięki@GigaScratch!)
  • Napraw analizowanie typów tablicy w typach ogólnych (#19205) (dzięki@MartinGC94!)
  • Naprawianie symboli wieloznacznych w katalogu głównym ścieżek urządzenia (#19442) (dzięki@MartinGC94!)
  • Dodawanie publicznego interfejsu API do pobierania lokalizacji elementów PSModulePath (#19422)
  • Poprawiono niepoprawny ciąg konwersji typu (#19560) (dziękujemy)@MartinGC94!)
  • Napraw powolne wykonywanie, 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, FeedbackText i FeedbackAction , które $PSStyle.Formatting umożliwiają zmianę formatowania komunikatów opinii.
  • PSModuleAutoLoadSkipOfflineFiles — odnajdywanie modułów pomija teraz pliki oznaczone przez dostawców chmury jako nie w pełni na dysku.
  • PSCommandWithArgs — dodawanie obsługi przekazywania argumentów do poleceń jako pojedynczego ciągu

Następujące funkcje eksperymentalne stały się głównym nurtem:

Program PowerShell 7.4 zmienił następujące funkcje eksperymentalne:

Aby uzyskać więcej informacji na temat funkcji eksperymentalnych, zobacz Używanie funkcji eksperymentalnych.