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 dobegin
elementu ,process
iend
w celu umożliwienia łatwego czyszczenia zasobów (#15177) - Zmień wartość domyślną na
$PSStyle.OutputRendering
Host - Wprowadź
Out-String
iOut-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
- Umożliwia pokazywanie metod w wynikach uzupełniania dla
- 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 celupwsh
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!) - Ulepszanie obsługi zmiennych podczas wywoływania za
Invoke-Command
$using:
pomocą wyrażenia (#16113) (dzięki@dwtaber!) - Dodaj
-StrictMode
do , abyInvoke-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 dobegin
elementu ,process
iend
w celu umożliwienia łatwego czyszczenia zasobów (#15177) - Dodawanie
-Amended
przełącznika doGet-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
— Dodajeclean
blok blokowy do bloku skryptu jako element równorzędny dobegin
elementu ,process
iend
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 noweSwitch-Process
polecenie cmdlet (aliasexec
) w celu zapewnieniaexec
zgodności dla systemów innych niż Windows.Program PowerShell 7.3.1 zmienił
exec
alias na funkcję, która opakowujeSwitch-Process
element . 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.