Neuerungen in PowerShell 7.3
PowerShell 7.3 ist das nächste Vorschaurelease, das auf .NET 7.0 basiert.
PowerShell 7.3 umfasst die folgenden Features, Updates und Breaking Changes.
Breaking Changes und Verbesserungen
- In diesem Release wurden Windows-APIs aus Gründen der Konformität aktualisiert oder entfernt, was bedeutet, dass PowerShell 7.3 nicht unter Windows 7 ausgeführt wird. Windows 7 wird nicht mehr unterstützt, jedoch konnten vorherige Builds unter Windows 7 ausgeführt werden.
- PowerShell Direct für Hyper-V wird nur auf Windows 10 Version 1809 und höher unterstützt.
Test-Connection
ist aufgrund eines absichtlichen Breaking Change in .NET 7 fehlerhaft. Der Fehler wird in #17018 nachverfolgt.- Hinzufügen eines
clean
-Blocks zum Skriptblock als Peer fürbegin
,process
undend
, um eine einfache Ressourcenbereinigung zu ermöglichen (#15177) - Ändern der Standardeinstellung für
$PSStyle.OutputRendering
in Host Out-String
undOut-File
sollen die Zeichenfolgeneingaben unverändert beibehalten (#17455)- Typdatendefinition von System.Security.AccessControl.ObjectSecurity in das Modul Microsoft.PowerShell.Security verschoben (#16355) (vielen Dank an @iSazonov!)
- Vor dieser Änderung musste ein Benutzer das Modul Microsoft.PowerShell.Security nicht explizit importieren, um die für eine Instanz von System.Security.AccessControl.ObjectSecurity definierten Eigenschaften des Codes zu verwenden.
- Nach dieser Änderung muss ein Benutzer das Modul Microsoft.PowerShell.Security explizit importieren, um diese Codeeigenschaften und -methoden verwenden zu können.
Verbesserungen bei der TAB-Vervollständigung
- PowerShell 7.3 enthält PSReadline 2.2.6, wodurch Predictive IntelliSense standardmäßig aktiviert wird. Weitere Informationen finden Sie unter about_PSReadLine.
- Korrigieren der Tabstopp-Vervollständigung innerhalb des für das
ValidateScriptAttribute
angegebenen Skriptblocks (#14550) (vielen Dank an @MartinGC94!) - TAB-Vervollständigung für Schleifenbezeichnungen nach
break
/continue
hinzugefügt (#16438) (vielen Dank an @MartinGC94!) - Hashtable-Vervollständigung in mehreren Szenarien verbessert (#16498) (vielen Dank an @MartinGC94!)
- Parametersplatting
- Arguments-Parameter für
Invoke-CimMethod
- FilterHashtable-Parameter für
Get-WinEvent
- Property-Parameter für CIM-Cmdlets
- Entfernt Duplikate aus Szenarien mit Membervervollständigung
- Schrägstriche bei Vervollständigung der Netzwerkfreigabe (UNC-Pfad) unterstützt (#17111) (vielen Dank an @sba923!)
- Automatische Vervollständigung von Membern verbessert (#16504) (vielen Dank an @MartinGC94!)
- Priorisieren von ValidateSet-Vervollständigungen gegenüber Parameter-Enumerationen (#15257) (vielen Dank an @MartinGC94!))
- Typrückschlussunterstützung für generische Methoden mit Typparametern hinzugefügt (#16951) (vielen Dank an @MartinGC94!)
- Typrückschluss und Vervollständigungen verbessert (#16963) (vielen Dank an @MartinGC94!)
- Ermöglicht die Darstellung von Methoden in Abschlussergebnissen für
ForEach-Object -MemberName
- Verhindert die Fertigstellung von Ausdrücken, die leere Ausdrücke wie z. B.
([void](""))
zurückgeben - Ermöglicht die Anzeige nicht standardmäßiger Klassenkonstruktoren bei AST-basiertem Klassenabschluss
- Ermöglicht die Darstellung von Methoden in Abschlussergebnissen für
- Typrückschluss für
$_
verbessert (#17716) (vielen Dank an @MartinGC94!) - Typrückschluss für ICollection korrigiert (#17752) (vielen Dank an @MartinGC94!)
- Verhindern, dass geschweifte Klammern beim Vervollständigen von Variablen entfernt werden (#17751) (vielen Dank an @MartinGC94!)
- Vervollständigung von Indexausdrücken für Wörterbücher hinzugefügt (#17619) (vielen Dank an @MartinGC94!)
- Typvervollständigung für Attributtoken korrigiert (#17484) (vielen Dank an @MartinGC94!)
- Dynamische Vervollständigung der Parameterregisterkarte verbessert (#17661) (vielen Dank an @MartinGC94!)
- Binden von Positionsparametern verhindern, wenn Parameter vor dem Wert vervollständigt werden (#17693) (vielen Dank an @MartinGC94!)
Fehlerbehandlung verbessert
- Korrektes Festlegen von
$?
für Befehlsausdruck mit Umleitungen (#16046) - Beheben eines Umwandlungsfehlers bei Verwendung von
$PSNativeCommandUseErrorActionPreference
(#15993) - Ermöglichen einer optionalen Berücksichtigung von
ErrorActionPreference
bei der nativen Fehlerbehandlung für Befehle (#15897) - Ausführbaren Pfad angeben als
TargetObject
für ErrorRecord mit einem Exitcode ungleich null (#16108) (vielen Dank an @rkeithhill!)
Verbesserungen bei Sitzung und Remoting
- Zu den PSRP-over-SSH-Befehlen „
-Options
“ hinzufügen, um die direkte Übergabe von OpenSSH-Optionen zu ermöglichen (#12802) (vielen Dank an @BrannenGH!) - Hinzufügung von Parameter „
-ConfigurationFile
“ zu „pwsh
“, um den Start eines neuen Prozesses mit der in einer.pssc
-Datei definierten Sitzungskonfiguration zu ermöglichen (#17447) - Hinzufügen von Unterstützung für die Verwendung von
New-PSSessionConfigurationFile
auf anderen Plattformen als Windows (#17447)
Aktualisierte Cmdlets
- Parameter „
-HttpVersion
“ zu Web-Cmdlets hinzugefügt (#15853) (vielen Dank an @hayhay27!) - Unterstützung für Eingabetags mit offenem Ende zu Web-Cmdlets hinzugefügt (#16193) (vielen Dank an @farmerau!)
ConvertTo-Json -Depth
korrigiert, um maximal 100 zuzulassen (#16197) (vielen Dank an @KevRitchie!)@rkeithhill!)- Variablenverarbeitung beim Aufruf von
Invoke-Command
mit dem Ausdruck$using:
verbessert (#16113) (vielen Dank an @dwtaber!) - „
-StrictMode
“ zu „Invoke-Command
“ hinzugefügt, um die Angabe des strict-Modus beim lokalen Aufruf des Befehls zu ermöglichen (#16545) (vielen Dank an @Thomas-Yu!) - Hinzufügen eines
clean
-Blocks zum Skriptblock als Peer fürbegin
,process
undend
, um eine einfache Ressourcenbereinigung zu ermöglichen (#15177) - Der Schalter
-Amended
wurde dem CmdletGet-CimClass
hinzugefügt (#17477) (vielen Dank an @iSazonov) ConvertFrom-Json -AsHashtable
für die Verwendung der sortierten Hashtabelle geändert (#17405)- ANSI-Escapesequenzen in Zeichenfolgen vor dem Senden an
Out-GridView
entfernt (#17664) - Parameter Milliseconds zu
New-TimeSpan
hinzugefügt (#17621) (vielen Dank an @NoMoreFood!) - Optionale Parameter zeigen, wenn Methodendefinitionen und Überladungen angezeigt werden (#13799) (vielen Dank an @eugenesmlv!)
- Ausführung von Befehlen zulassen, auch wenn das aktuelle Arbeitsverzeichnis nicht mehr vorhanden ist (#17579)
- Unterstützung für HTTPS mit
Set-AuthenticodeSignature -TimeStampServer
hinzugefügt (#16134) (vielen Dank an @Ryan-Hutchison-USAF!) - Dezimalzahlen in einer Tabelle unter Verwendung der aktuellen Kultur rendern (#17650)
- Typbeschleuniger hinzugefügt, die für OrderedDictionary sortiert sind (#17804) (vielen Dank an @fflaten!)
find.exe
zum Legacybindungsverhalten für Argumente für Windows hinzugefügt (#17715)- Schalter
-noprofileloadtime
zu pwsh hinzugefügt (#17535) (vielen Dank an @rkeithhill!)
Eine umfassende Liste der Änderungen finden Sie im Änderungsprotokoll im GitHub-Repository.
Experimentelle Features
In PowerShell 7.3. haben sich folgende experimentelle Features dauerhaft durchgesetzt:
PSAnsiRenderingFileInfo
: Dieses Feature fügt das$PSStyle.FileInfo
-Member hinzu und ermöglicht die Färbung bestimmter Dateitypen.PSCleanBlock
: Fügt einenclean
-Block zum Skriptblock als Peer fürbegin
,process
undend
hinzu, um eine einfache Ressourcenbereinigung zu ermöglichenPSAMSIMethodInvocationLogging
: erweitert die zur Überprüfung an AMSI gesendeten Daten um alle Aufrufe von Membern von .NET-Methoden.PSNativeCommandArgumentPassing: PowerShell verwendet nun die ArgumentList-Eigenschaft des StartProcessInfo-Objekts anstelle des alten Mechanismus zum Rekonstruieren einer Zeichenfolge beim Aufruf einer nativen ausführbaren Datei.
PowerShell 7.3.1 fügt
sqlcmd.exe
der Liste der nativen Befehle in Windows hinzu, die denLegacy
-Stil der Argumentübergabe verwenden.PSExec
Fügt das neue CmdletSwitch-Process
(aliasexec
) hinzu, umexec
-Kompatibilität für Systeme bereitzustellen, die auf anderen Systemen als Windows basieren.In PowerShell 7.3.1 wurde das
exec
-Alias in eine Funktion geändert, dieSwitch-Process
umschließt. Mit der Funktion können Sie Parameter an den nativen Befehl übergeben, die möglicherweise fälschlicherweise an den WithCommand-Parameter gebunden wurden.
In PowerShell 7.3 werden die folgenden experimentellen Features eingeführt:
- PSNativeCommandErrorActionPreference: Fügt die
$PSNativeCommandUseErrorActionPreference
-Variable hinzu, um von nativen Befehlen ausgelöste Fehler als PowerShell-Fehler zu aktivieren
In PowerShell 7.3 werden die folgenden experimentellen Features entfernt:
- Das experimentelle Feature
PSNativePSPathResolution
wird nicht länger unterstützt. - Das experimentelle Feature
PSStrictModeAssignment
wird nicht länger unterstützt.
Weitere Informationen zu den experimentellen Features finden Sie unter Verwenden experimenteller Features.