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)
  • Join-String -InputObject 1,2,3 Ergebnis gleich 1,2,3 | Join-String Ergebnis (#8611) (Danke)@sethvs!)
  • Sort-Object Hinzufügen -Stable und verwandter Tests (#7862) (Dank@KirkMunro!)
  • Verbessern des Start-Sleep Cmdlets zur Annahme von Bruch sekunden (#8537) (Dank @Prototyyppi!)
  • Ändern der Hashtabelle, sodass OrdinalIgnoreCase verwendet wird, damit die Tabelle in allen Kulturen case-insensitive ist (#8566)
  • Beheben Sie LiteralPath , Import-Csv um an Get-ChildItem die Ausgabe zu binden (#8277) (Dank @iSazonov!)
  • Übersprungen eine Spalte ohne Namen nicht mehr, wenn doppelte Anführungszeichentrennzeichen in Import-Csv (#7899) verwendet werden (Danke) @Topping!)
  • Get-ExperimentalFeature hat nicht mehr die Option -ListAvailable (#8318)
  • Debugparameter werden jetzt anstelle vonInquire (#8195) (Danke) festgelegt$DebugPreference.@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)
  • Hinzufügen PATHEXT von Umgebungsvariablen auf Unix (#7697) (Danke @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)
  • Make PSVersionInfo.PSVersion and PSVersionInfo.PSEdition public (#8054) (Dank @KirkMunro!)
  • Add Type Inference for in $_ / $PSItemcatch{ } Blocks (#8020) (Dank @vexx32!)
  • Beheben statischer Methodentypinference (#8018) (Dank @SeeminglyScience!)
  • Erstellen von verzögerten Typen für Select-Object, Group-ObjectPSObject und Hashtable (#7231) (Danke@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 von Parameter ReplyTo zu Send-MailMessage (#8727) (Danke @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#-Formattyp-Zugriffstasten und Suffixen für ushort, uint, ulong und kurze Literale (#7813) (Dank @vexx32!)
  • Neue Suffixe für numerische Literale hinzugefügt - siehe about_Numeric_Literals (#7901) (Danke @vexx32!)
  • Korrekter Bericht der Auswirkungenebene, wenn SupportsShouldProcess nicht auf "true" (#8209) festgelegt ist (Danke) @vexx32!)
  • Beheben von Fehler beim Anfordern von Charsets in Web Cmdlets (#8742) (Vielen Dank @markekraus!)
  • 100-continue Problem mit Web-Cmdlets beheben (#8679) (Vielen Dank@markekraus!)
  • Problem beim Blockieren von Dateien mit Web-Cmdlets beheben (#7676) (Vielen Dank @Claustn!)
  • Beheben des Problem mit der Codeseitenanalyse in Invoke-RestMethod (#8694) (Vielen Dank @markekraus!)
  • Umgestalten von ConvertTo-Json, um JsonObject.ConvertToJson als öffentliche API verfügbar zu machen (#8682)
  • Hinzufügen der konfigurierbaren maximalen Tiefe in ConvertFrom-Json -Depth (#8199) (Dank @louistio!)
  • Add EscapeHandling parameter in ConvertTo-Json cmdlet (#7775) (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)
  • Problem mit "PSTypeName" beheben Get-Help , wenn nur ein Parameter deklariert wird (#8754) (Dank @pougetat!)
  • Korrektur der Tokenberechnung für Get-Help ausgeführt auf ScriptBlock für Kommentarhilfe. (#8238) (Vielen Dank @hubuk!)
  • Cmdlet -Parameter ändern Get-Help , damit Zeichenfolgenarrays (#8454) (Danke) akzeptiert werden @sethvs!)
  • Auflösen von PAGER, wenn der Pfad Leerzeichen (#8571) enthält (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 Unterstützungs- und Zeichentypen im Format-Hex Cmdlet (#8191) (Dank @iSazonov!)
  • Entfernen von ShouldProcess aus Format-Hex (#8178)
  • Hinzufügen neuer Offset- und Count-Parameter zu Format-Hex dem Cmdlet (#7877) (Dank @iSazonov!)
  • Zulassen von "Name" als Aliasschlüssel für "Bezeichnung" in ConvertTo-Html, zulassen Sie den Eintrag "breite" als ganze Zahl (#8426) (Dank @mklement0!)
  • Erstellen sie skriptblockbasierte berechnete Eigenschaften erneut in ConvertTo-Html (#8427) (Danke @mklement0!)
  • Join-String Cmdlet zum Erstellen von Text aus Der Pipelineeingabe hinzufügen (#7660) (Dank@powercode!)
  • Fix Join-String cmdlet FormatString-Parameterlogik (#8449) (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)
  • Beheben Sie LiteralPath, Import-Csv um an Get-ChildItem die Ausgabe zu binden (#8277) (Dank @iSazonov!)
  • Hilfefunktion sollte Pager nicht für AliasHelpInfo verwenden (#8552)
  • Start-Transcript Hinzufügen -UseMinimalHeader zum Minimieren des Transkriptheaders (#8402) (Dank@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 non-Windows platform (#8291) (Dank @lukexjeremy!)
  • Hinzufügen von Support für cd + (#7206) (Vielen Dank @bergmeister!)
  • Set-Location -LiteralPath funktioniert mit Ordnern, die mit „-“ und „+“ benannt sind (#8089)
  • Test-Pathgibt zurück, wenn ein leerer oder $null Pfadwert (#8080) (Danke) zurückgegeben $false wird.@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) (Dank @iSazonov!)
  • Add-Content kann den Lesezugriff beim Schreiben von Inhalt mit anderen Tools gemeinsam nutzen (#8091)
  • Get/Add-Content löst einen verbesserten Fehler beim Ziel eines Containers (#7823) (Dank @kvprasoon!)
  • -NoUserOverrides Hinzufügen -Nameund -ListAvailable Parameter zum Get-Culture Cmdlet (#7702) (Dank@iSazonov!)
  • Hinzufügen eines vereinheitlichten Attribut für die Vervollständigung des Encoding-Parameters. (#7732) (Vielen Dank @ThreeFive-O!)
  • Zulassen von numerischen IDs und Namen registrierter Codeseiten in Codierungsparametern (#7636) (Dank @iSazonov!)
  • Fix Rename-Item -Path mit Platzhalterzeichen (#7398) (Vielen Dank @kwkam!)
  • Bei Verwendung Start-Transcript und Datei ist eine leere Datei vorhanden, anstatt die Datei zu löschen (#8131) (Vielen Dank @paalbra!)
  • Erstellen sie Add-Type Open Source Dateien mit FileAccess.Read und FileShare.Read explizit (#7915) (Dank@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 %F von Fall zu Get-Date -UFormat (#7630) (Danke @britishben!)
  • Fix Set-Service -Status Stopped zum Beenden von Diensten mit Abhängigkeiten (#5525) (Dank @zhenggu!)