Freigeben über


Neuerungen in PowerShell Core 6.2

Das Release PowerShell Core 6.2 konzentriert sich auf Leistungsverbesserungen, Fehlerbehebungen und kleinere Cmdlet- und Sprachverbesserungen, die die Qualität verbessern. Eine vollständige Liste der Verbesserungen finden Sie in unseren detaillierten Änderungsprotokollen auf GitHub.

Experimentelle Features

Wir haben bereits früher die Unterstützung experimenteller Features aktiviert. Release 6.2 enthält vier experimentelle Features, die Sie ausprobieren können. Bitte geben Sie uns Feedback, damit wir Verbesserungen vornehmen und entscheiden können, ob das Feature allgemein verfügbar gemacht werden sollte.

Verwenden Sie Get-ExperimentalFeature, um eine Liste der verfügbaren experimentellen Features abzurufen. Sie können diese Features mit Enable-ExperimentalFeature und Disable-ExperimentalFeature aktivieren oder deaktivieren.

„Befehl nicht gefunden“-Vorschläge

Dieses Feature sucht anhand von Fuzzyübereinstimmungen nach Vorschlägen für Befehle oder Cmdlets, bei denen Sie sich möglicherweise verschrieben haben.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Beispiel

In diesem Beispiel bestehen Fuzzyübereinstimmungen des falsch geschriebenen Cmdlet-Namens mit mehreren Vorschlägen, vom wahrscheinlichsten bis zum am wenigsten wahrscheinlichen.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Implizite Remoting-Batchverarbeitung

Bei Verwendung von implizitem Remoting in einer Pipeline behandelt PowerShell die Befehle in der Pipeline unabhängig voneinander. Objekte werden während der Ausführung der Pipeline wiederholt zwischen dem Client und dem Remotesystem serialisiert und de-serialized.

Mit diesem Feature analysiert PowerShell die Pipeline, um festzustellen, ob der Befehl sicher ausgeführt werden kann und auf dem Zielsystem vorhanden ist. Wenn „true“, führt PowerShell die gesamte Pipeline remote aus und serialisiert und de-serializes nur die Ergebnisse zurück an den Client.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Ein Test von Get-Process | Sort-Object in der realen Welt über Localhost wird von 10 bis 15 Sekunden auf 20 bis 30 Millisekunden reduziert. Dieses Feature muss nur auf dem Client aktiviert werden. Auf dem Server sind keine Änderungen erforderlich.

Temporäres Laufwerk

Enable-ExperimentalFeature -Name PSTempDrive

Wenn Sie PowerShell Core auf verschiedenen Betriebssystemen verwenden, werden Sie feststellen, dass die Umgebungsvariable für die Suche nach dem temporären Verzeichnis unter Windows, macOS und Linux unterschiedlich ist! Mit diesem Feature erhalten Sie ein PSDrive namens Temp:, dass automatisch dem temporären Ordner für das von Ihnen verwendete Betriebssystem zugeordnet ist.

Beispiel

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Beachten Sie, dass native Dateibefehle (z.B. ls unter Linux) nicht für PSDrives geeignet sind und dieses Temp:-Laufwerk nicht erkennen.

Erweiterung der Abkürzung

Von PowerShell-Cmdlets wird erwartet, dass sie beschreibende Namen haben. Dies führt zu langen, schwieriger einzugebenden Namen. Mit diesem Feature genügt es, wenn Sie nur die Großbuchstaben des Cmdlets eingeben und anhand der Vervollständigung mit der TAB-Taste eine Übereinstimmung suchen.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Beispiel

PS> i-arsavsf

Wenn Sie das Az-Modul von Azure PowerShell installiert haben und die TAB-Taste drücken, wird die automatische Vervollständigung ausgeführt:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Hinweis

Dieses Feature ist für die interaktive Verwendung vorgesehen. Abgekürzte Formen der Cmdlets können nicht ausgeführt werden. Dieses Feature ist kein Ersatz für Aliase.

Aktuelle Änderungen

  • -NoEnumerate-Verhalten in Write-Output ist konsistent mit Windows PowerShell. (#9069)
  • Ergebnis Join-String -InputObject 1,2,3 gleich 1,2,3 | Join-String Ergebnis (#8611) (Vielen Dank @sethvs!)
  • Hinzufügen -Stable zu Sort-Object und verwandte Tests (#7862) (Vielen Dank @KirkMunro!)
  • Cmdlet verbessern Start-Sleep , um Sekundenbruchteile zu akzeptieren (#8537) (Vielen Dank @Prototyyppi!)
  • Ändern der Hashtabelle, sodass OrdinalIgnoreCase verwendet wird, damit die Tabelle in allen Kulturen case-insensitive ist (#8566)
  • Korrigieren von LiteralPath in Import-Csv , um an die Ausgabe zu Get-ChildItem binden (#8277) (Vielen Dank @iSazonov!)
  • Eine Spalte ohne Namen wird nicht mehr übersprungen, wenn in Import-Csv (#7899) ein doppeltes Anführungszeichen verwendet wird (Vielen Dank @Topping!)
  • Get-ExperimentalFeature hat nicht mehr die Option -ListAvailable (#8318)
  • Debugparameter legt jetzt auf Continue anstelle von Inquire (#8195) fest $DebugPreference (Vielen Dank@KirkMunro!)
  • Beachtung von -OutputFormat bei Angabe in nicht interaktivem, umgeleitetem, codiertem Befehl, der mit PowerShell verwendet wird (#8115)
  • Assembly wird vor dem Versuch, aus dem GAC geladen zu werden, aus dem Modulbasispfad geladen (#8073)
  • Entfernen der Tilde aus Linux-Vorschaupaketen (#8244)
  • Verschieben der Verarbeitung von -WorkingDirectory vor der Verarbeitung von Profilen (#8079)
  • Keine Umgebungsvariable unter Unix hinzufügen PATHEXT (#7697) (Vielen Dank @iSazonov!)

Bekannte Probleme

  • Beim Remoting tritt auf Windows IOT-ARM-Plattformen beim Laden von Modulen ein Problem auf. Siehe (#8053)

Allgemeine Updates und Fixes

  • Vervollständigung mit der TAB-Taste ohne Berücksichtigung der Groß-/Kleinschreibung für Dateien und Ordner im Groß-/Kleinschreibung berücksichtigenden Dateisystem (#8128)
  • Veröffentlichen von PSVersionInfo.PSVersion und PSVersionInfo.PSEdition (#8054) (Vielen Dank @KirkMunro!)
  • Hinzufügen von Typrückschluss für in $_ / $PSItemcatch{ } Blöcken (#8020) (Vielen Dank @vexx32!)
  • Fix static method invocation type inference (#8018) (Vielen Dank @SeeminglyScience!)
  • Create abgeleitete Typen für Select-Object, , Group-ObjectPSObject und Hashtable (#7231) (Vielen Dank@powercode!)
  • Unterstützung des Methodenaufrufs mit ByRef-like-Typparametern (#7721)
  • Behandeln des Falls, dass der Windows PowerShell-Modulpfad bereits im PSModulePath der Umgebung enthalten ist (#7727)
  • Aktivieren von SecureString-Cmdlets für Nicht-Windows durch Speichern von Nur-Text (#9199)
  • Verbesserte Fehlermeldung in Nicht-Windows beim Importieren von „clixml“ mit securestring (#7997)
  • Hinzufügen des Parameters ReplyTo zu Send-MailMessage (#8727) (Vielen Dank @replicaJunction!)
  • Hinzufügen der „Veraltet“-Nachricht zu Send-MailMessage (#9178)
  • Restart-Computer funktioniert auf localhost, wenn WinRM nicht vorhanden ist (#9160)
  • Veranlassen, dass Start-Job einen Fehler mit Abbruch auslöst, wenn PowerShell gehostet wird (#9128)
  • Hinzufügen von C#-Formattypbeschleunigungen und Suffixen für ushort, uint, ulong und kurze Literale (#7813) (Vielen Dank @vexx32!)
  • Neue Suffixe für numerische Literale hinzugefügt – siehe about_Numeric_Literals (#7901) (Vielen Dank @vexx32!)
  • Auswirkungsebene korrekt melden, wenn SupportsShouldProcess nicht auf "true" festgelegt ist (#8209) (Vielen Dank @vexx32!)
  • Beheben von Problemen mit Anforderungszeichen in Web-Cmdlets (#8742) (Vielen Dank @markekraus!)
  • Beheben eines Erwarteten 100-continue Problems mit Web-Cmdlets (#8679) (Vielen Dank @markekraus!)
  • Problem beim Blockieren von Dateien mit Web-Cmdlets beheben (#7676) (Vielen Dank @Claustn!)
  • Problem mit der Codeseitenanalyse in Invoke-RestMethod beheben (#8694) (Vielen Dank @markekraus!)
  • Umgestalten von ConvertTo-Json, um JsonObject.ConvertToJson als öffentliche API verfügbar zu machen (#8682)
  • Hinzufügen konfigurierbarer maximaler Tiefe in ConvertFrom-Json mit -Depth (#8199) (Vielen Dank @louistio!)
  • Hinzufügen des EscapeHandling-Parameters im ConvertTo-Json Cmdlet (#7775) (Vielen Dank @iSazonov!)
  • Hinzufügen von -CustomPipeName zu PowerShell und Enter-PSHostProcess (#8889)
  • Relative symbolische Verknüpfungen können mit New-Item unter Windows erstellt werden (#8783)
  • Zulassen, das Windows-Benutzer im Entwicklermodus ohne Rechteerweiterung symbolische Verknüpfungen erstellen (#8534)
  • Write-Information akzeptiert $null (#8774)
  • Korrigieren von Get-Help für erweiterte Funktionen mit MAML-Hilfeinhalt (#8353)
  • Beheben des Get-Help PSTypeName-Problems mit -Parameter, wenn nur ein Parameter deklariert ist (#8754) (Vielen Dank @pougetat!)
  • Korrektur der Tokenberechnung für Get-Help ausgeführt auf ScriptBlock für Kommentarhilfe. (#8238) (Vielen Dank @hubuk!)
  • Ändern des Get-Help Cmdlet -Parameterparameters, damit Zeichenfolgenarrays akzeptiert werden (#8454) (Vielen Dank @sethvs!)
  • Auflösen von PAGER, wenn sein Pfad Leerzeichen enthält (#8571) (Vielen Dank @pougetat!)
  • Hinzufügen einer Eingabeaufforderung bei Verwendung von less in der Funktion „help“", um Benutzer anzuweisen, wie sie beenden sollen (#7998)
  • Hinzufügen von Support-Enumerations- und Char-Typen im Format-Hex Cmdlet (#8191) (Vielen Dank @iSazonov!)
  • Entfernen von ShouldProcess aus Format-Hex (#8178)
  • Hinzufügen neuer Offset- und Count-Parameter zu Format-Hex und Umgestalten des Cmdlets (#7877) (Vielen Dank @iSazonov!)
  • Zulassen von "name" als Aliasschlüssel für "bezeichnung" in ConvertTo-Html, zulassen, dass der Eintrag "width" eine ganze Zahl ist (#8426) (Vielen Dank @mklement0!)
  • Lassen Sie skriptblockbasierte berechnete Eigenschaften in ConvertTo-Html wieder funktionieren (#8427) (Vielen Dank @mklement0!)
  • Cmdlet Join-String zum Erstellen von Text aus der Pipelineeingabe hinzufügen (#7660) (Vielen Dank @powercode!)
  • Korrigieren der Join-String Parameterlogik des Cmdlets FormatString (#8449) (Vielen Dank @sethvs!)
  • Änderung von Clear-Host zurück zur Verwendung von $RAWUI und Bereitmachen zur Arbeit mit Remoting (#8609)
  • Änderung von Clear-Host in einfach aufgerufenes [console]::clear und Entfernen des clear-Alias aus Unix (#8603)
  • Korrigieren von LiteralPath in Import-Csv für die Bindung an die Get-ChildItem Ausgabe (#8277) (Vielen Dank @iSazonov!)
  • Hilfefunktion sollte Pager nicht für AliasHelpInfo verwenden (#8552)
  • Hinzufügen -UseMinimalHeader zu Start-Transcript zum Minimieren des Transkriptheaders (#8402) (Vielen Dank an @lukexjeremy!)
  • Hinzufügen der Cmdlets Enable-ExperimentalFeature und Disable-ExperimentalFeature (#8318)
  • Verfügbar machen aller Cmdlets aus PSDiagnostics, wenn „logman.exe“ verfügbar ist (#8366)
  • Remove Persist parameter from New-PSDrive on platform non-Windows (#8291) (Vielen Dank an @lukexjeremy!)
  • Hinzufügen von Unterstützung für (#7206) (Vielen Dank an cd +@bergmeister!)
  • Set-Location -LiteralPath funktioniert mit Ordnern, die mit „-“ und „+“ benannt sind (#8089)
  • Test-Path gibt zurück $false , wenn ein leerer Wert oder $null ein Pfadwert angegeben wird (#8080) (Vielen Dank an @vexx32!)
  • Dynamische Parameter können auch dann zurückgegeben werden, wenn der Pfad mit keinem Anbieter übereinstimmt (#7957)
  • Unterstützung von Get-PSHostProcessInfo und Enter-PSHostProcess auf Unix-Plattformen (#8232)
  • Reduzieren von Zuordnungen im Get-Content Cmdlet (#8103) (Vielen Dank an @iSazonov!)
  • Add-Content kann den Lesezugriff beim Schreiben von Inhalt mit anderen Tools gemeinsam nutzen (#8091)
  • Get/Add-Content löst einen verbesserten Fehler aus, wenn ein Container als Ziel verwendet wird (#7823) (Vielen Dank an @kvprasoon!)
  • Hinzufügen der -NameParameter , -NoUserOverrides und -ListAvailable zum Get-Culture Cmdlet (#7702) (Vielen Dank an @iSazonov!)
  • Hinzufügen eines vereinheitlichten Attribut für die Vervollständigung des Encoding-Parameters. (#7732) (Vielen Dank @ThreeFive-O!)
  • Numerische IDs und Namen registrierter Codepages in Codierungsparametern zulassen (#7636) (Vielen Dank an @iSazonov!)
  • Korrektur Rename-Item -Path mit Wildcardzeichen (#7398) (Vielen Dank an @kwkam!)
  • Wenn die -Datei und verwendet Start-Transcript wird, ist eine leere Datei anstelle des Löschens vorhanden (#8131) (Vielen Dank an @paalbra!)
  • Erstellen von Add-Type Open Source Dateien mit FileAccess.Read und FileShare.Read explizit (#7915) (Vielen Dank an@IISResetMe!)
  • Korrektur von Enter-PSSession -ContainerId für aktuelle Windows-Version (#7883)
  • Sicherstellen, dass NestedModules-Eigenschaft durch Test-ModuleManifest aufgefüllt wird (#7859)
  • Hinzufügen von %F Case zu Get-Date -UFormat (#7630) (Vielen Dank @britishben!)
  • Korrektur Set-Service -Status Stopped zum Beenden von Diensten mit Abhängigkeiten (#5525) (Vielen Dank an @zhenggu!)