Co nowego w programie PowerShell 7.3

Program PowerShell 7.3 to kolejna stabilna wersja oparta na platformie .NET 7.0.

Program PowerShell 7.3 zawiera następujące funkcje, aktualizacje i zmiany powodujące niezgodność.

Istotne zmiany i ulepszenia

  • W tej wersji interfejsy API systemu Windows zostały zaktualizowane lub usunięte pod kątem zgodności, co oznacza, że program PowerShell 7.3 nie działa w systemie Windows 7. Chociaż system Windows 7 nie jest już obsługiwany, poprzednie kompilacje mogą działać w systemie Windows 7.
  • Program PowerShell Direct dla funkcji Hyper-V jest obsługiwany tylko w systemie Windows 10 w wersji 1809 lub nowszej.
  • Test-Connection jest uszkodzona z powodu zamierzonej zmiany powodującej niezgodność na platformie .NET 7. Jest śledzony przez #17018
  • Dodawanie clean bloku do bloku skryptu jako elementu równorzędnego do beginelementu , processi end w celu umożliwienia łatwego czyszczenia zasobów (#15177)
  • Zmień wartość domyślną na $PSStyle.OutputRenderingHost
  • Wprowadź Out-String i Out-File zachowaj niezmienione dane wejściowe ciągu (#17455)
  • Przenieś definicję danych typu System.Security.AccessControl.ObjectSecurity do modułu Microsoft.PowerShell.Security (#16355) (dziękujemy)@iSazonov!)
    • Przed tą zmianą użytkownik nie musi jawnie importować modułu Microsoft.PowerShell.Security , aby użyć właściwości kodu zdefiniowanych dla wystąpienia elementu System.Security.AccessControl.ObjectSecurity.
    • Po tej zmianie użytkownik musi jawnie zaimportować moduł Microsoft.PowerShell.Security , aby użyć tych właściwości kodu i metod kodu.

Ulepszenia uzupełniania kart

  • Program PowerShell 7.3 zawiera program PSReadline 2.2.6, który domyślnie włącza funkcję IntelliSense predykcyjną. Aby uzyskać więcej informacji, zobacz about_PSReadLine.
  • Naprawiono uzupełnianie kart w bloku skryptu określonym dla elementu ValidateScriptAttribute. (#14550) (Dziękujemy)@MartinGC94!)
  • Dodano uzupełnianie kart dla etykiet pętli po break/continue (#16438) (Dzięki@MartinGC94!)
  • Ulepszanie uzupełniania tabeli skrótów w wielu scenariuszach (#16498) (dzięki@MartinGC94!)
    • Rozplatanie parametrów
    • Parametr argumentów dla Invoke-CimMethod
    • FilterHashtable parametr dla Get-WinEvent
    • Parametr właściwości dla poleceń cmdlet modelu CIM
    • Usuwa duplikaty ze scenariuszy uzupełniania składowych
  • Obsługa ukośników w ramach uzupełniania udziału sieciowego (ścieżka UNC) (#17111) (Dzięki@sba923!)
  • Ulepszanie autouzupełniania elementu członkowskiego (#16504) (dziękujemy)@MartinGC94!)
  • Określanie priorytetów uzupełniania elementu ValidateSet w wyliczeniach dla parametrów (#15257) (dzięki@MartinGC94!)
  • Dodano obsługę wnioskowania typów dla metod ogólnych z parametrami typu (#16951) (Dzięki@MartinGC94!)
  • Ulepszanie wnioskowania i uzupełniania typu (#16963) (Dzięki@MartinGC94!)
    • Umożliwia pokazywanie metod w wynikach uzupełniania dla ForEach-Object -MemberName
    • Zapobiega uzupełnianiu w wyrażeniach, które zwracają wartość void, na przykład ([void](""))
    • Zezwala konstruktorom klasy innej niż domyślna na wyświetlanie, gdy uzupełnianie klasy jest oparte na AST
  • Ulepszanie wnioskowania typów dla $_ (#17716) (Dzięki@MartinGC94!)
  • Poprawiono wnioskowanie typu dla ICollection (#17752) (Dzięki@MartinGC94!)
  • Zapobiegaj usuwaniu nawiasów klamrowych podczas kończenia zmiennych (#17751) (Dzięki@MartinGC94!)
  • Dodawanie uzupełniania dla wyrażeń indeksu dla słowników (#17619) (Dzięki@MartinGC94!)
  • Poprawiono uzupełnianie typu dla tokenów atrybutów (#17484) (Dziękujemy@MartinGC94!)
  • Ulepszanie uzupełniania kart parametrów dynamicznych (#17661) (dziękujemy)@MartinGC94!)
  • Unikaj wiązania parametrów pozycyjnych podczas kończenia parametru przed wartością (#17693) (Dzięki@MartinGC94!)

Ulepszono obsługę błędów

  • Ustaw $? poprawnie dla wyrażenia polecenia z przekierowaniami (#16046)
  • Naprawianie błędu rzutu podczas używania ($PSNativeCommandUseErrorActionPreference#15993)
  • Opcjonalne honorowanie ErrorActionPreference natywnej obsługi błędów poleceń (#15897)
  • Określ ścieżkę wykonywalną jako TargetObject dla kodu zakończenia innego niż zero ErrorRecord (#16108) (Dzięki@rkeithhill!)

Ulepszenia sesji i komunikacji zdalnie

  • Dodaj -Options do protokołu PSRP za pośrednictwem poleceń SSH, aby zezwolić na bezpośrednie przekazywanie opcji OpenSSH (#12802) (dzięki@BrannenGH!)
  • Dodaj -ConfigurationFile parametr w celu pwsh umożliwienia rozpoczęcia nowego procesu z konfiguracją sesji zdefiniowaną .pssc w pliku (#17447)
  • Dodano obsługę używania New-PSSessionConfigurationFile na platformach innych niż Windows (#17447)

Zaktualizowano następujące polecenia cmdlet

  • Dodawanie -HttpVersion parametru do poleceń cmdlet sieci Web (#15853) (dziękujemy)@hayhay27!)
  • Dodano obsługę poleceń cmdlet sieci Web dla otwartych tagów wejściowych (#16193) (dzięki@farmerau!)
  • Poprawka ConvertTo-Json -Depth umożliwiająca maksymalną wartość 100 (#16197) (dzięki@KevRitchie!)@rkeithhill!)
  • Ulepszanie obsługi zmiennych podczas wywoływania za Invoke-Command$using: pomocą wyrażenia (#16113) (dzięki@dwtaber!)
  • Dodaj -StrictMode do , aby Invoke-Command zezwolić na określanie trybu ścisłego podczas wywoływania polecenia lokalnie (#16545) (Dzięki@Thomas-Yu!)
  • Dodawanie clean bloku do bloku skryptu jako elementu równorzędnego do beginelementu , processi end w celu umożliwienia łatwego czyszczenia zasobów (#15177)
  • Dodawanie -Amended przełącznika do Get-CimClass polecenia cmdlet (#17477) (Dziękujemy)@iSazonov)
  • Zmieniono ConvertFrom-Json -AsHashtable polecenie , aby użyć uporządkowanej tabeli skrótu (#17405)
  • Usunięto sekwencje ucieczki ANSI w ciągach przed wysłaniem do Out-GridView (#17664)
  • Dodano parametr Milliseconds do New-TimeSpan (#17621) (Dziękujemy)@NoMoreFood!)
  • Pokaż parametry opcjonalne podczas wyświetlania definicji metod i przeciążeń (#13799) (Dzięki@eugenesmlv!)
  • Zezwalaj na wykonywanie poleceń, nawet jeśli bieżący katalog roboczy już nie istnieje (#17579)
  • Dodano obsługę protokołu HTTPS przy użyciu Set-AuthenticodeSignature -TimeStampServer protokołu (#16134) (dziękujemy)@Ryan-Hutchison-USAF!)
  • Renderuj liczby dziesiętne w tabeli przy użyciu bieżącej kultury (#17650)
  • Dodano akcelerator typów uporządkowany dla elementu OrderedDictionary (#17804) (dzięki@fflaten!)
  • Dodawanie find.exe do zachowania powiązania argumentów starszej wersji dla systemu Windows (#17715)
  • Dodawanie -noprofileloadtime przełącznika do programu pwsh (#17535) (Dziękujemy)@rkeithhill!)

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

Funkcje eksperymentalne

W programie PowerShell 7.3 następujące funkcje eksperymentalne stały się głównym nurtem:

  • PSAnsiRenderingFileInfo — Ta funkcja dodaje element członkowski $PSStyle.FileInfo i umożliwia kolorowanie określonych typów plików.

  • PSCleanBlock — Dodaje clean blok blokowy do bloku skryptu jako element równorzędny do beginelementu , processi end w celu umożliwienia łatwego czyszczenia zasobów.

  • PSAMSIMethodInvocationLogging — Rozszerza dane wysyłane do usługi AMSI w celu przeprowadzenia inspekcji, aby uwzględnić wszystkie wywołania elementów członkowskich metody platformy .NET.

  • PSNativeCommandArgumentPassing — program PowerShell używa teraz właściwości ArgumentList obiektu StartProcessInfo, a nie starego mechanizmu rekonstrukcji ciągu podczas wywoływania natywnego pliku wykonywalnego.

    Program PowerShell 7.3.1 dodaje sqlcmd.exe do listy natywnych poleceń w systemie Windows, które używają Legacy stylu przekazywania argumentów.

  • PSExec - Dodaje nowe Switch-Process polecenie cmdlet (alias exec) w celu zapewnienia exec zgodności dla systemów innych niż Windows.

    Program PowerShell 7.3.1 zmienił exec alias na funkcję, która opakowuje Switch-Processelement . Funkcja umożliwia przekazywanie parametrów do natywnego polecenia, które może być błędnie powiązane z parametrem WithCommand .

Program PowerShell 7.3 wprowadza następujące funkcje eksperymentalne:

  • PSNativeCommandErrorActionPreference — dodaje zmienną $PSNativeCommandUseErrorActionPreference w celu włączenia błędów generowanych przez polecenia natywne jako błędy programu PowerShell.

Program PowerShell 7.3 usunął następujące funkcje eksperymentalne:

  • PSNativePSPathResolution funkcja eksperymentalna nie jest już obsługiwana.
  • PSStrictModeAssignment funkcja eksperymentalna nie jest już obsługiwana.

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