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 auchTest-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.
- Mit dieser Änderung unterstützt
- Die Ausgabe von
Test-Connection
enthält jetzt ausführlichere Informationen zu TCP-Verbindungstests. - .NET hat Änderungen eingeführt, die
Test-Connection
betroffen 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
- undExport-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 inSelect-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 CmdletsSelect-Object
undGet-Unique
hinzugefügt (#19683) (Danke @ArmaanMcleod!)). Restart-Computer
undStop-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.
- Dieses Feature fügt auch die FeedbackName-, FeedbackText-und FeedbackAction Eigenschaften zu
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 hat die folgenden experimentellen Features geändert:
- PSCommandNotFoundSuggestion – Dieses Feature verwendet jetzt einen erweiterbaren Feedbackanbieter anstelle hartcodierter Vorschläge (#18726)
Weitere Informationen zu den experimentellen Funktionen finden Sie unter Verwendung experimenteller Funktionen.