Freigeben über


Neuerungen in PowerShell 7.4

PowerShell 7.4.7 enthält die folgenden Features, Updates und bahnbrechende Änderungen. PowerShell 7.4.7 basiert auf .NET 8.0.12.

Eine vollständige Liste der Änderungen finden Sie im CHANGELOG- im GitHub-Repository.

Wichtige Änderungen

  • Nano-Server-Docker-Images sind für diese Version nicht verfügbar.
  • Der Parameter ProgressAction wurde den allgemeinen Parametern hinzugefügt.
  • Aktualisieren Sie einige PowerShell-APIs, um ArgumentException- anstelle ArgumentNullException- auszuwerfen, wenn das Argument eine leere Zeichenfolge (#19215) ist (Danke @xtqqczze!)
  • Entfernen von Code bezogen auf #requires -pssnapin (#19320)
  • Test-Json verwendet jetzt JsonSchema.NET anstelle von Newtonsoft.Json.Schema.
    • Mit dieser Änderung unterstützt Test-Json die älteren Entwurf-4-Schemas nicht mehr. (#18141) (Danke @gregsdennis!). Weitere Informationen zu JSON-Schemas finden Sie in JSON-Schema Dokumentation. Dadurch werden auch Test-Json für JSON- und JSONC-Dateien mit Kommentaren unterbrochen.
    • ConvertFrom-Json-Unterstützung verwendet weiterhin Newtonsoft.Json.Schema, sodass JSON-Dateien mit Kommentaren konvertiert werden können.
  • Die Ausgabe von Test-Connection enthält jetzt ausführlichere Informationen zu TCP-Verbindungstests.
  • .NET hat Änderungen eingeführt, die Test-Connectionbetroffen haben. Das Cmdlet gibt jetzt einen Fehler über die Notwendigkeit zurück, sudo auf Linux-Plattformen bei Verwendung einer benutzerdefinierten Puffergröße zu verwenden (#20369)
  • Experimentelles Feature PSNativeCommandPreserveBytePipe ist jetzt mainstream. PowerShell bewahrt nun die Byte-Stream-Daten, wenn der stdout--Stream eines nativen Befehls in eine Datei umgeleitet oder wenn Byte-Stream-Daten an den stdin-Stream eines nativen Befehls geleitet werden.
  • Ändern der Behandlung relativer Pfade in Resolve-Path bei Verwendung des RelativeBasePath -Parameters (#19755) (Danke @MartinGC94!)
  • Nicht verwendeten PSv2-Code entfernen - Entfernt TabExpansion-Funktion (#18337)

Updates des Installationsprogramms

Das Windows MSI-Paket bietet jetzt eine Option zum Deaktivieren der PowerShell-Telemetrie während der Installation. Weitere Informationen finden Sie unter Installieren des MSI-Pakets über die Befehlszeile.

Aktualisierte Versionen von PSResourceGet und PSReadLine

PowerShell 7.4 enthält Microsoft.PowerShell.PSResourceGet v1.0.1. Dieses Modul wird parallel mit PowerShellGet v2.2.5 und PackageManagement v1.4.8.1 installiert. Weitere Informationen finden Sie in der Dokumentation für Microsoft.PowerShell.PSResourceGet-.

PowerShell 7.4 enthält jetzt PSReadLine v2.3.4. Weitere Informationen finden Sie in der Dokumentation zu PSReadLine-.

Verbesserungen bei der TAB-Vervollständigung

Vielen Dank an @MartinGC94 und alle anderen für die Verbesserung der Vervollständigung mit der TAB-Taste.

  • Behebung eines Problems beim Abschließen des ersten Befehls in einem Skript mit einem leeren Arrayausdruck (#18355)
  • Behebung eines Problems mit der Vervollständigung des positionellen Arguments (#17796)
  • Priorisieren sie den Standardparametersatz beim Abschließen von Positionsargumenten (#18755)
  • Verbessern der Pseudobindung für dynamische Parameter (#18030)
  • Verbesserung der Typinferenz von Hash-Tabellen-Schlüsseln (#17907)
  • Behebung eines Typrückschlussfehlers für leere return-Anweisungen (#18351)
  • Verbessern der Typreferenz für Get-Random (#18972)
  • Korrigieren der Typinferenz für alle Bereichsvariablen (#18758)
  • Verbesserung der Enumeration abgeleiteter Typen in der Pipeline (#17799)
  • Hinzufügung der Vervollständigung für Werte in Vergleichen beim Vergleich von Enumerationen (#17654)
  • Hinzufügen der Vervollständigung von Eigenschaftszuweisungen für Enumerationen (#19178)
  • Behebung eines Problems mit der Vervollständigung für PSCustomObject-Variableneigenschaften (#18682)
  • Behebung eines Problems mit der Membervervollständigung im Attributargument (#17902)
  • Ausschließen redundanter Parameteraliasen aus Abschlussergebnissen (#19382)
  • Behebung eines Problems mit der Vervollständigung von Klassen mit Basistypen (#19179)
  • Hinzufügen der Vervollständigung für die Verwendung von Schlüsselwörtern (#16514)
  • Behebung des TabExpansion2-Variablenverlusts beim Abschließen von Variablen (#18763)
  • Aktivieren der Vervollständigung von Variablen in ScriptBlock-Bereichen (#19819)
  • Behebung eines Problems bei der Vervollständigung der Foreach-Anweisungsvariablen (#19814)
  • Behebung eines Problems im Zusammenhang mit der Rangfolge von Variablen des Typs „Inference“ (#18691)
  • Behebung eines Problems mit der Membervervollständigung für die PowerShell Enumerationsklasse (#19740)
  • Korrektur der Analyse von Arrayliteralen in Indexausdrücken in Methodenaufrufen (#19224)
  • Verbesserung des Pfadabschlusses (#19489)
  • Behebung eines „Out of bound“-Indizierungsfehlers in CompleteInput für leere Skripteingaben (#19501)
  • Verbesserung der Vervollständigungsleistung von Variablen (#19595)
  • Verbesserung der Vervollständigung von Hashtable-Schlüsseln für typbeschränkte Variablenzuweisungen, geschachtelte Hashtables und mehr (#17660)
  • Externe Anwendungsausgabe als Zeichenfolgen ableiten (#19193)
  • Aktualisierung der Parametervollständigung für Enumerationen, um Werte auszuschließen, die von „ValidateRange“ Attributen nicht zugelassen werden (#17750) (Vielen Dank @fflaten!)).
  • Behebung der dynamischen Parametervervollständigung (#19510)
  • Hinzufügen der Vervollständigung für Variablen, die von der Data-Anweisung zugewiesen wurden (#19831)
  • Beheben der Erweiterung von Tilde (~) auf Windows-Systemen auf $home mit systemeigenen Befehlen zum Verhindern von Unterbrechungen (#21529)

Verbesserungen bei Web-Cmdlets

Vielen Dank an @CarloToso und anderen für alle Arbeiten zur Verbesserung von Web-Cmdlets.

  • Fehlerbehebung bei der Dekomprimierung in Web-Cmdlets, um Brotli einzuschließen (#17955) (Danke @iSazonov!)
  • Webcmdlets fügen 308 hinzu, um Code umzuleiten und kleinere Bereinigungen (#18536)
  • Schließen Sie das Rendern der Statusleiste in Invoke-WebRequest ab, wenn der Download abgeschlossen oder abgebrochen wurde (#18130)
  • Web-Cmdlets rufen ein Intervall vom Typ Retry-After aus Antwortheadern ab, wenn der Statuscode 429 lautet. (#18717)
  • Web-Cmdlets legen die standardmäßige Zeichensatzcodierung auf UTF8 fest (#18219)
  • Beibehalten von WebSession.MaximumRedirection vor Änderungen (#19190)
  • WebCmdlets analysieren die XML-Deklaration, um den Codierungswert abzurufen, falls vorhanden. (#18748)
  • Behebung eines Problems mit der Verwendung von XML-Text in Web-Cmdlets ohne Codierung (#19281)
  • Anpassen des PUT-Methodenverhaltens auf POST one für den Standardinhaltstyp in WebCmdlets (#19152)
  • Berücksichtigen von ContentType von Headern in Web-Cmdlets (#19227)
  • Ermöglichen Sie das Beibehalten der ursprünglichen HTTP-Methode durch Hinzufügen von -PreserveHttpMethodOnRedirect zu Web-Cmdlets (#18894)
  • Webcmdlets zeigen einen Fehler bei einer Umleitung von https zu http an (#18595)
  • Hinzufügen einer AllowInsecureRedirect-Option zu Web-Cmdlets (#18546)
  • Verbessern ausführlicher Nachrichten in Web-Cmdlets, wenn die Inhaltslänge unbekannt ist (#19252)
  • Erstellen des relativen URI für Links aus der Antwort in Invoke-WebRequest (#19092)
  • Behebung des Problems der Umleitung von -CustomMethod POST in WebCmdlets (#19111)
  • Vorherige Antwort in Webcmdlets löschen (#19117)
  • Verbessern des Invoke-WebRequest XML- und JSON-Fehlerformats (#18837)
  • Hinzufügen von ValidateNotNullOrEmpty zu OutFile- und InFile-Parametern von Web-Cmdlets (#19044)
  • HttpKnownHeaderNames-Updateheaderliste (#18947)
  • Invoke-RestMethod -FollowRelLink Links mit Kommas korrigieren (#18829)
  • Fehler beim Verwalten von Umleitungen und KeepAuthorization in Web-Cmdlets beheben (#18902)
  • Hinzufügen StatusCode- zu HttpResponseException- (#18842)
  • HTTP-Persistente Verbindungen in Web-Cmdlets unterstützen (#19249) (Danke @stevenebutler!) )
  • Kleine Bereinigung Invoke-RestMethod (#19490)
  • Verbessern der ausführlichen Meldung von WebCmdlets, um die richtige HTTP-Version anzuzeigen (#19616)
  • Hinzufügen von FileNameStar zu MultipartFileContent in WebCmdlets (#19467)
  • Korrigieren Sie den HTTP-Status von 409 auf 429 für WebCmdlets, um das Wiederholungsintervall aus dem Retry-After-Header abzurufen. (#19622) (Danke @mkht!)
  • Ändern Sie -TimeoutSec in -ConnectionTimeoutSeconds, und fügen Sie -OperationTimeoutSeconds zu Web-Cmdlets hinzu (#19558) (Danke @stevenebutler!) Andere Cmdlets
  • Unterstützung für Strg+C, wenn die Verbindung beim Lesen von Daten in WebCmdlets hängt (#19330) (Vielen Dank @stevenebutler!))
  • Unterstützung von Unix-Domain-Sockets in WebCmdlets (#19343)

Weitere Cmdlet-Verbesserungen

  • Test-Connection gibt jetzt Fehler über die Notwendigkeit zurück, sudo auf Linux-Plattformen bei Verwendung einer benutzerdefinierten Puffergröße zu verwenden (#20369)
  • Hinzufügen von Ausgabetypen zu Formatbefehlen (#18746) (Danke @MartinGC94!)
  • Hinzufügen von Output-Typattributen für Get-WinEvent (#17948) (Vielen Dank an @MartinGC94!)!)
  • Fügen Sie die Parameter Path- und LiteralPath- zu Test-Json-Cmdlet (#19042) hinzu (Danke @ArmaanMcleod!))
  • Fügen Sie den NoHeader-Parameter zu den ConvertTo-Csv- und Export-Csv-Cmdlets hinzu (#19108) (Danke @ArmaanMcleod!))
  • Fügen Sie die Parameter Confirm und WhatIf zu Stop-Transcript(#18731) hinzu (Vielen Dank @JohnLBevan!))
  • Fügen Sie FuzzyMinimumDistance Parameter zu Get-Command hinzu (#18261)
  • Machen Sie den Codierungs--Parameter fähig, die ANSI Codierung in PowerShell zu akzeptieren (#19298) (Danke @CarloToso!) )
  • Hinzufügen des Fortschritts zu Copy-Item (#18735)
  • Update-Help meldet jetzt einen Fehler, wenn auf US-fremden Systemen eine implizite Kultur verwendet wird. (#17780) (Danke @dkaszews!)
  • Keine Aktivität beim Erstellen eines abgeschlossenen Fortschrittsdatensatzes erforderlich (#18474) (Dank @MartinGC94!)
  • Nicht zulassen negativer Werte für die Get-Content Cmdlet-Parameter -Head und -Tail (#19715) (Danke @CarloToso!)
  • Veranlassen Sie, dass Update-Help eine ordnungsgemäße Fehlermeldung wirft, wenn die aktuelle Kultur nicht mit einer Sprache verbunden ist (#19765) (Danke @josea!) )
  • Die Kombination von -Skip- und -SkipLast-Parametern in Select-Object Cmdlet zulassen. (#18849) (Danke @ArmaanMcleod!)
  • Hinzufügen des Cmdlet „Get-SecureRandom“ (#19587)
  • Set-Clipboard -AsOSC52 für die Remoteverwendung (#18222) (Danke @dkaszews!)
  • Beschleunigen der relativen Resolve-Path-Pfadauflösung (#19171) (Vielen Dank an @MartinGC94!)!)
  • Den Switch-Parameter -CaseInsensitive zu den Cmdlets Select-Object und Get-Unique hinzugefügt (#19683) (Danke @ArmaanMcleod!)).
  • Restart-Computer und Stop-Computer sollten mit einem Fehler fehlschlagen, wenn sie nicht über sudo auf Unix ausgeführt werden (#19824)

Motorverbesserungen

Updates für $PSStyle

  • Eigenschaften Dim und DimOff hinzugefügt (#18653)
  • Statische Methoden zur Klasse PSStyle hinzugefügt, die Werte vom Typ ConsoleColor (Vorder- und Hintergrund) ANSI-Escapesequenzen zuordnen (#17938)
  • Tabellenüberschriften für berechnete Felder sind standardmäßig kursiv formatiert
  • Unterstützung für die Einhaltung von $PSStyle.OutputRendering auf dem Remotehost hinzufügen (#19601)
  • Aktualisierte Telemetriedaten zur Verwendung von CrescendoBuilt Modulen (#20371)

Weitere Engine-Updates

  • PowerShell-Klasse wird beim Deklarieren des Attributs NoRunspaceAffinity nicht Runspace zugeordnet. (#18138)
  • Hinzufügen des attributs ValidateNotNullOrWhiteSpace (#17191) (Danke @wmentha!)
  • sqlcmd zur Liste für die Übergabe von Legacyargumenten hinzugefügt (#18559)
  • Hinzufügen der Funktion cd~ (#18308) (Danke @GigaScratch!)
  • Korrektur der Arraytypanalyse in generischen Typen (#19205) (Vielen Dank an @MartinGC94!)!)
  • Behebung eines Problems mit Platzhalter-Globbing im Stamm von Gerätepfaden (#19442) (Vielen Dank an @MartinGC94!)!)
  • Hinzufügen einer öffentlichen API zum Abrufen von Speicherorten von PSModulePath-Elementen (#19422)
  • Falsche Zeichenfolge für Typkonvertierung korrigieren (#19560) (Danke @MartinGC94!)
  • Behebung der langsamen Ausführung, wenn viele Breakpoints verwendet werden (#14953) (Vielen Dank an @nohwnd!)!)
  • Entfernung von Code im Zusammenhang mit „#requires -pssnapin“ (#19320)

Experimentelle Funktionen

PowerShell 7.4 führt die folgenden experimentellen Features ein:

  • PSFeedbackProvider- – Ersetzt das hartcodierte Vorschlagsframework durch einen erweiterbaren Feedbackanbieter.
    • Dieses Feature fügt auch die FeedbackName-, FeedbackText-und FeedbackAction Eigenschaften zu $PSStyle.Formatting, mit denen Sie die Formatierung von Feedbacknachrichten ändern können.
  • PSModuleAutoLoadSkipOfflineFiles: Die Modulermittlung überspringt jetzt Dateien, die von Cloudanbietern als unvollständig auf dem Datenträger gekennzeichnet sind.
  • PSCommandWithArgs – Unterstützung für das Übergeben von Argumenten an Befehle als einzelne Zeichenfolge hinzufügen

Die folgenden experimentellen Features wurden mainstream:

PowerShell 7.4 hat die folgenden experimentellen Features geändert:

Weitere Informationen zu den experimentellen Funktionen finden Sie unter Verwendung experimenteller Funktionen.