Neuerungen in PowerShell 7.4
PowerShell 7.4 umfasst die folgenden Features, Updates und Breaking Changes. PowerShell 7.4 basiert auf .NET 8.0.0.
Eine umfassende Liste der Änderungen finden Sie im Änderungsprotokoll im GitHub-Repository.
Aktuelle Änderungen
- Keine Nano Server-Docker-Images für dieses Release verfügbar
- ProgressAction-Parameter wurde zu den allgemeinen Parametern hinzugefügt
- Einige PowerShell-APIs wurde so aktualisiert, dass ArgumentException anstelle von ArgumentNullException ausgelöst wird, wenn das Argument eine leere Zeichenfolge ist (#19215) (Vielen Dank, @xtqqczze!)
- Entfernung von Code im Zusammenhang mit „
#requires -pssnapin
“ (#19320) Test-Json
verwendet jetzt JsonSchema.NET anstelle von Newtonsoft.Json.Schema.- Mit dieser Änderung unterstützt „
Test-Json
“ die älteren Draft 4-Schemas nicht mehr. (#18141) (Vielen Dank an @gregsdennis!). Weitere Informationen zu JSON-Schemas finden Sie in der 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 nun ausführlichere Informationen zu TCP-Verbindungstests - .NET hat Änderungen eingeführt, die
Test-Connection
betreffen. 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 allgemein verfügbar. PowerShell behält die Bytestreamdaten bei, wenn der stdout-Stream eines nativen Befehls an eine Datei umgeleitet wird oder wenn Bytestreamdaten an den stdin-Stream eines nativen Befehls weitergeleitet werden.
- Ändern der Behandlung relativer Pfade in
Resolve-Path
bei Verwendung des RelativeBasePath -Parameters (#19755) (Danke @MartinGC94!) - Entfernen von unbenutztem PSv2 Code – entfernt die TabExpansion Funktion (#18337)
Updates des Installationsprogramms
Das Windows-MSI-Paket bietet jetzt eine Option zum Deaktivieren von PowerShell-Telemetriedaten 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 für 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, das beim Abschließen des ersten Befehls in einem Skript mit einem leeren Arrayausdruck auftrat (#18355)
- Behebung eines Problems mit der Vervollständigung des positionellen Arguments (#17796)
- Priorisieren des Standardparametersatzes beim Abschließen von Positionsargumenten (#18755)
- Verbesserung der Pseudobindung für dynamische Parameter (#18030)
- Verbesserung des Typrückschlusses von Hashtabellenschlüsseln (#17907)
- Behebung eines Typrückschlussfehlers für leere return-Anweisungen (#18351)
- Verbesserung des Typrückschlusses für Get-Random (#18972)
- Beheben eines Problems mit dem Typrückschluss 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 Parameteraliase aus den 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)
- Verbessern der Vervollständigung von Hashtabellenschlüsseln für typbeschränkte Variablenzuweisungen, geschachtelte Hashtabellen usw, (#17660)
- Ableitung externer Anwendungsausgaben als Zeichenfolgen (#19193)
- Aktualisierung der Parametervollständigung für Enumerationen, um Werte auszuschließen, die von „
ValidateRange
“ Attributen nicht zugelassen werden (#17750) (Vielen Dank @fflaten!)). - Beheben eines Problems bei der Vervollständigung dynamischer Parameter (#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 an Web-Cmdlets
Vielen Dank an @CarloToso und alle anderen für die Verbesserung der Web-Cmdlets.
- Beheben der Dekomprimierung in Web-Cmdlets, um Brotli (#17955) einzuschließen (Danke @iSazonov!)
- Webcmdlets fügen 308 hinzu, um Code umzuleiten und kleinere Bereinigungen (#18536)
- Abschließen des Renderns der Statusanzeige in Invoke-WebRequest, 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 Standardzeichensatzcodierung 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 Verhaltens der PUT-Methode an POST 1 für den Standardinhaltstyp in Web-Cmdlets (#19152)
- Berücksichtigen von ContentType von Headern in Web-Cmdlets (#19227)
- Zulassen des Beibehaltens der ursprünglichen HTTP-Methode durch Hinzufügen von -PreserveHttpMethodOnRedirect zu Web-Cmdlets (#18894)
- Web-Cmdlets zeigen einen Fehler bei der Umleitung von HTTPS auf 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) - Verwerfen der vorherigen Antwort in Web-Cmdlets (#19117)
- Verbesserung der XML- und JSON-Fehlerformate für
Invoke-WebRequest
(#18837) - Hinzufügen von ValidateNotNullOrEmpty zu OutFile- und InFile-Parametern von Web-Cmdlets (#19044)
- HttpKnownHeaderNames-Updateheaderliste (#18947)
- Behebung des Fehlers im Zusammenhang mit „
Invoke-RestMethod -FollowRelLink
“-Links, die Kommas enthalten (#18829) - Behebung eines Fehlers beim Verwalten der Umleitung und der KeepAuthorization in Web-Cmdlets (#18902)
- Hinzufügen von StatusCode zu HttpResponseException (#18842)
- Unterstützung persistenter HTTP-Verbindungen in Web-Cmdlets (#19249) (Vielen Dank, @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)
- Korrektur des HTTP-Status von 409 auf 429 für WebCmdlets, um ein Wiederholungsintervall aus „Retry-After“-Header zu erhalten. (#19622, mit bestem Dank an @mkht!)!)
- Ändern von „
-TimeoutSec
„ zu „-ConnectionTimeoutSeconds
„ und Hinzufügen von „-OperationTimeoutSeconds
“ zu Web-Cmdlets (#19558) (Vielen Dank an @stevenebutler!) für andere Cmdlets) - Unterstützung von STRG+C, wenn die Verbindung beim Lesen von Daten in WebCmdlets hängen bleibt (#19330) (Vielen Dank an @stevenebutler!)!)
- Unterstützung für Unix-Domänensocket in WebCmdlets (#19343)
Weitere Verbesserungen an Cmdlets
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) (Vielen Dank an @MartinGC94!)!)
- Hinzufügen von Output-Typattributen für
Get-WinEvent
(#17948) (Vielen Dank an @MartinGC94!)!) - Hinzufügen der Parameter Path und LiteralPath zum Cmdlet
Test-Json
(#19042) (Vielen Dank, @ArmaanMcleod!) - Hinzufügen des NoHeader-Parameters zu den Cmdlets
ConvertTo-Csv
undExport-Csv
(#19108) (Vielen Dank, @ArmaanMcleod!) - Parameter Confirm und WhatIf zu
Stop-Transcript
hinzugefügt (#18731) (Vielen Dank an @JohnLBevan!) - Parameter FuzzyMinimumDistance zu
Get-Command
hinzugefügt (#18261) - Unterstützung des Parameters Encoding für die
ANSI
-Codierung in PowerShell (#19298) (Vielen Dank, @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) (Vielen Dank an @dkaszews!))- Keine Aktivität beim Erstellen eines abgeschlossenen Fortschrittsdatensatzes erforderlich (#18474) (Dank @MartinGC94!)
- Ablehnen negativer Werte für „
Get-Content
-“Cmdlet-Parameter-Head
und-Tail
(#19715) (Vielen Dank an @CarloToso!)!) Update-Help
löst den richtigen Fehler aus, wenn die aktuelle Kultur keiner Sprache zugeordnet ist (#19765) (Dank @josea!)- Ermöglichen des Kombinierens von „
-Skip
“- und „-SkipLast
“-Parametern im „Select-Object
“-Cmdlet. (#18849, mit bestem Dank an @ArmaanMcleod!)!) - Hinzufügen des Cmdlet „
Get-SecureRandom
“ (#19587) Set-Clipboard -AsOSC52
für die Remotenutzung (#18222) (Vielen Dank an @dkaszews!)!)- Beschleunigen der relativen
Resolve-Path
-Pfadauflösung (#19171) (Vielen Dank an @MartinGC94!)!) - Hinzufügen des Switch-Parameters
-CaseInsensitive
zu den CmdletsSelect-Object
undGet-Unique
(#19683) (Vielen Dank, @ArmaanMcleod!) - Beim Ausführen von
Restart-Computer
undStop-Computer
sollte ein Fehler ausgegeben werden, wenn sie nicht über sudo unter Unix ausgeführt werden (#19824)
Engine-Verbesserungen
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 werden standardmäßig kursiv formatiert
- Hinzufügen der Unterstützung der Beachtung von „
$PSStyle.OutputRendering
“ auf dem Remotehost (#19601) - Aktualisierte Telemetriedaten für die Verwendung von
CrescendoBuilt
Modulen (#20371)
Weitere Engine-Aktualisierungen
- PowerShell-Klasse wird beim Deklarieren des Attributs
NoRunspaceAffinity
nicht Runspace zugeordnet. (#18138) - Attribut
ValidateNotNullOrWhiteSpace
hinzugefügt (#17191) (Vielen Dank an @wmentha!) sqlcmd
zur Liste für die Übergabe von Legacyargumenten hinzugefügt (#18559)- Funktion
cd~
hinzugefügt (#18308) (Vielen Dank an @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)
- Korrektur einer falschen Zeichenfolge für die Typkonvertierung (#19560) (Vielen Dank an @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 Features
In PowerShell 7.4 werden folgende experimentelle Features eingeführt:
- PSFeedbackProvider: Ersetzt das hartcodierte Vorschlagsframework durch einen erweiterbaren Feedbackanbieter.
- Dieses Feature fügt auch die Eigenschaften FeedbackName, FeedbackText und FeedbackAction zu
$PSStyle.Formatting
hinzu, um das Ändern der Formatierung von Feedbacknachrichten zu ermöglichen.
- Dieses Feature fügt auch die Eigenschaften FeedbackName, FeedbackText und FeedbackAction zu
- PSModuleAutoLoadSkipOfflineFiles: Die Modulermittlung überspringt jetzt Dateien, die von Cloudanbietern als unvollständig auf dem Datenträger gekennzeichnet sind.
- PSCommandWithArgs: Hinzufügen von Unterstützung für das Übergeben von Argumenten an Befehle als einzelne Zeichenfolge
Die folgenden experimentellen Features haben sich dauerhaft durchgesetzt:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
Folgende experimentelle Features werden in PowerShell 7.4 geändert:
- PSCommandNotFoundSuggestion: Dieses Feature verwendet jetzt einen erweiterbaren Feedbackanbieter anstelle hartcodierter Vorschläge. (#18726)
Weitere Informationen zu den experimentellen Features finden Sie unter Verwenden experimenteller Features.