Udostępnij za pomocą


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 nie działa z powodu zamierzonej zmiany powodującej niekompatybilność w .NET 7. Jest śledzony przez #17018
  • Dodaj clean blok do bloku skryptu jako element równorzędny do begin, process i end, aby umożliwić łatwe czyszczenie zasobów (#15177)
  • Zmień wartość domyślną na $PSStyle.OutputRenderingHost
  • Spraw, aby Out-String i Out-File zachowały niezmieniony ciąg wejściowy (#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 tabulatorów w bloku skryptu określonym dla ValidateScriptAttribute. (#14550) (Dziękujemy)@MartinGC94!)
  • Dodano uzupełnianie kart dla etykiet pętli po break/continue (#16438) (Dzięki@MartinGC94!)
  • Ulepszenie 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 cmdletów CIM
    • Usuwa duplikaty ze scenariuszy ukończenia elementów
  • Obsługa ukośników w ramach uzupełniania udziału sieciowego (ścieżka UNC) (#17111) (Dzięki@sba923!)
  • Ulepszyć autouzupełnianie członków (#16504) (Dziękujemy @MartinGC94!))
  • Należy priorytetyzować uzupełnianie ValidateSet nad Enum dla parametrów (#15257) (Dzięki@MartinGC94!))
  • Dodano obsługę wnioskowania typów dla metod ogólnych z parametrami typu (#16951) (Dzięki@MartinGC94!)
  • Ulepsz wnioskowanie typu i uzupełnianie (#16963) (Dzięki< c1 />
    • 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
  • Poprawa 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 uzupełniania parametru przed wartością (#17693) (Dzięki @MartinGC94!))

Ulepszono obsługę błędów

  • Ustaw $? poprawnie dla wyrażenia polecenia z przekierowaniami (#16046)
  • Napraw błąd rzutowania 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 zdalnego dostępu

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

Zaktualizowane polecenia cmdlet

  • Dodaj -HttpVersion parametr 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!)
  • Ulepsz obsługę zmiennych podczas wywoływania Invoke-Command za pomocą wyrażenia $Using: (#16113) dzięki @dwtaber!)
  • Dodaj -StrictMode do Invoke-Command aby określić tryb ścisły podczas wywoływania polecenia lokalnie (#16545) Dzięki @Thomas-Yu!)
  • Dodaj blok clean do bloku skryptu jako równorzędny z begin, process i 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, 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 z Set-AuthenticodeSignature -TimeStampServer (#16134) (dziękujemy @Ryan-Hutchison-USAF!))
  • Wyświetl liczby dziesiętne w tabeli przy użyciu bieżącej kultury (#17650)
  • Dodano uporządkowany akcelerator typów dla OrderedDictionary (#17804) (dzięki@fflaten!)
  • Dodaj find.exe do zachowania powiązania argumentów w systemie Windows (#17715)
  • Dodaj -NoProfileLoadTime przełącznik do 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 $PSStyle.FileInfo i umożliwia kolorowanie określonych typów plików.

  • PSCleanBlock — Dodaje clean blok do bloku skryptu jako równorzędny z begin, process i 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ł alias exec na funkcję, która opakowuje Switch-Process. 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.