Share via


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ür begin, process und end, um eine einfache Ressourcenbereinigung zu ermöglichen (#15177)
  • Ändern der Standardeinstellung für $PSStyle.OutputRendering in Host
  • Out-String und Out-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
  • 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ür begin, process und end, um eine einfache Ressourcenbereinigung zu ermöglichen (#15177)
  • Der Schalter -Amended wurde dem Cmdlet Get-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 einen clean-Block zum Skriptblock als Peer für begin, process und end hinzu, um eine einfache Ressourcenbereinigung zu ermöglichen

  • PSAMSIMethodInvocationLogging: 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 den Legacy-Stil der Argumentübergabe verwenden.

  • PSExec Fügt das neue Cmdlet Switch-Process (alias exec) hinzu, um exec-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, die Switch-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.