Freigeben über


Was gibt es neu in PowerShell Core 6.2

Die PowerShell Core 6.2-Version konzentrierte sich auf Leistungsverbesserungen, Fehlerbehebungen sowie kleinere Cmdlet- und Sprachverbesserungen, die die Qualität verbessern. Um eine vollständige Liste der Verbesserungen zu sehen, schauen Sie sich unsere detaillierten Changelogs auf GitHub an.

Experimentelle Funktionen

Früher haben wir die Unterstützung für experimentelle Funktionen aktiviert. In der Version 6.2 haben wir vier experimentelle Funktionen, die wir ausprobieren können. Bitte gebt Feedback, damit wir Verbesserungen vornehmen und entscheiden können, ob es sich lohnt, die Funktion zum Mainstream zu machen.

Nutze Get-ExperimentalFeature sie, um eine Liste verfügbarer experimenteller Funktionen zu erhalten. Du kannst diese Funktionen mit Enable-ExperimentalFeature und Disable-ExperimentalFeatureaktivieren oder deaktivieren.

Command Not Found Vorschläge

Diese Funktion verwendet Fuzzy-Matching, um Vorschläge für Befehle oder Cmdlets zu finden, die du möglicherweise falsch eingegeben hast.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

In diesem Beispiel ist der falsch geschriebene cmdlet-Name unscharf und stimmt mit mehreren Vorschlägen von am wahrscheinlichsten bis am wenigsten wahrscheinlich überein.

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 Rückstrahlungs-Batching

Bei der Verwendung impliziter Fernsteuerung in einer Pipeline behandelt PowerShell jeden Befehl in der Pipeline unabhängig. Objekte werden wiederholt serialisiert und de-serialized zwischen Client und entferntem System über die Ausführung der Pipeline hinweg.

Mit dieser Funktion analysiert PowerShell die Pipeline, um festzustellen, ob der Befehl sicher ausgeführt werden kann und ob er auf dem Zielsystem existiert. Wenn es zutrifft, führt PowerShell die gesamte Pipeline remote aus und serialisiert de-serializes die Ergebnisse nur an den Client zurück.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Ein realer Test über Get-Process | Sort-Object Localhost verringert sich von 10–15 Sekunden auf 20–30 Millisekunden. Die Funktion muss nur im Client aktiviert sein. Auf dem Server sind keine Änderungen erforderlich.

Temporärer Antrieb

Enable-ExperimentalFeature -Name PSTempDrive

Wenn Sie PowerShell Core auf verschiedenen Betriebssystemen verwenden, werden Sie feststellen, dass die Umgebungsvariable zur Suche nach dem temporären Verzeichnis unter Windows, macOS und Linux unterschiedlich ist! Mit dieser Funktion erhält man ein PSDrive , das Temp: automatisch auf den temporären Ordner des verwendeten Betriebssystems zugeordnet wird.

Example

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

Beachte, dass native Dateibefehle (wie ls unter Linux) PSDrives nicht kennen und diese Temp: Festplatte nicht sehen.

Abkürzungserweiterung

PowerShell-Cmdlets sollen beschreibende Substantive besitzen. Dies führt zu langen Namen, die schwerer zu tippen sind. Mit dieser Funktion kannst du einfach die Großbuchstaben des Cmdlets eingeben und mit Tab-Completion ein Treffer finden.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Wenn du auf Tab klickst und das Azure PowerShell Az-Modul installiert hast, wird es automatisch ergänzt zu:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Hinweis

Diese Funktion soll interaktiv genutzt werden. Abgekürzte Formen von Cmdlets können nicht ausgeführt werden. Diese Funktion ersetzt keine Aliasnamen.

Änderungen werden abgebrochen

  • Beheben Sie das Write-Output Verhalten-NoEnumerate, damit es mit Windows PowerShell konsistent ist. (#9069)
  • Mach Join-String -InputObject 1,2,3 Ergebnis gleich Ergebnis 1,2,3 | Join-String (#8611) (Danke @sethvs!)
  • Hinzufügen -Stable zu Sort-Object und verwandte Tests (#7862) (Danke @KirkMunro!)
  • Cmdlet verbessern Start-Sleep , um Bruchteile von Sekunden zu akzeptieren (#8537) (Danke @Prototyyppi!)
  • Ändere die Hashtabelle so, dass OrdinalIgnoreCase case-insensitive in allen Kulturen verwendet wird (#8566)
  • LiteralPath fixierenImport-Csv, um an die Get-ChildItem Ausgabe zu binden (#8277) (Danke@iSazonov!)
  • Überspringt keine Spalte ohne Namen mehr, wenn in (#7899) (Danke) doppelter Anführungszeichen verwendet Import-Csv wird. @Topping!)
  • Get-ExperimentalFeature Schalter hat -ListAvailable nicht mehr (#8318)
  • Der Debug-Parameter setzt $DebugPreference jetzt auf Fortsetzen statt Untersuchen (#8195) (Danke @KirkMunro!)
  • Honor -OutputFormat , wenn es im nicht-interaktiven, umgeleiteten, codierten Befehl mit pwsh angegeben ist (#8115)
  • Laden Sie die Assembly vom Modulbasispfad, bevor Sie versuchen, von der GAC zu laden (#8073)
  • Tilde aus Linux-Vorschaupaketen entfernen (#8244)
  • Umzugsbearbeitung vor -WorkingDirectory der Verarbeitung der Profile (#8079)
  • Keine Umgebungsvariable bei PATHEXT Unix hinzufügen (#7697) (Danke @iSazonov!)

Bekannte Probleme

  • Das Fernschreiben auf Windows IoT ARM-Plattformen hat ein Problem beim Laden von Modulen. Siehe (#8053)

Allgemeine Updates und Korrekturen

  • Aktivieren Sie die groß- und kleinschreibungsunsensitive Tab-Vervollständigung für Dateien und Ordner im kleinschreibungssensitiven Dateisystem (#8128)
  • Machen Sie PSVersionInfo.PSVersion und PSVersionInfo.PSEdition öffentlich (#8054) (Danke @KirkMunro!)
  • Typinferenz für $_ / $PSItem In-Blöcke catch{ } hinzufügen (#8020) (Danke @vexx32!)
  • Beheben Sie die Inferenz des statischen Methodenaufruftyps (#8018) (Danke @SeeminglyScience!)
  • Erstelle abgeleitete Typen für Select-Object, Group-Object, PSObject und Hashtable (#7231) (Danke @powercode!)
  • Unterstützende Aufrufmethode mit ByRef-like Typparametern (#7721)
  • Behandeln Sie den Fall, in dem der Windows-PowerShell-Modulpfad bereits im PSModulePath der Umgebung liegt (#7727)
  • Aktivieren Sie SecureString Cmdlets für Nicht-Windows, indem Sie den Klartext speichern (#9199)
  • Verbesserung der Fehlermeldung auf Nicht-Windows beim Import von CliXML mit Securestring (#7997)
  • Parameter hinzufügen ReplyTo zu Send-MailMessage (#8727) (Danke @replicaJunction!)
  • Veraltete Nachricht hinzufügen zu Send-MailMessage (#9178)
  • Lösung Restart-Computer , an der man arbeiten localhost kann, wenn WinRM nicht vorhanden ist (#9160)
  • Mach Start-Job den Throw-Terminationsfehler, wenn PowerShell gehostet wird (#9128)
  • Fügen Sie C#-ähnliche Beschleuniger und Suffixe für ushort, uint, ulong und kurze Literale hinzu (#7813) (Danke @vexx32!)
  • Neue Suffixe für numerische Literale hinzugefügt – siehe about_Numeric_Literals (#7901) (Danke @vexx32!)
  • Korrekt den Auswirkungsgrad melden, wenn SupportsShouldProcess nicht auf 'true' gesetzt ist (#8209) (Danke @vexx32!)
  • Probleme mit der Behebung von Charsets in Web-Cmdlets (#8742) (Danke @markekraus!)
  • Problem mit Web-Cmdlets beheben 100-continue (#8679) (Danke @markekraus!)
  • Dateiblockierungsproblem mit Web-Cmdlets (#7676) behoben (Danke @Claustn!)
  • Problem mit der Codepage-Parsing in Invoke-RestMethod (#8694) beheben (Danke @markekraus!)
  • Refactor ConvertTo-Json , um JsonObject.ConvertToJson als öffentliche API bereitzustellen (#8682)
  • Fügen Sie mit -Depth konfigurierbare maximale Tiefe ConvertFrom-Json hinzu (#8199) (Danke @louistio!)
  • EscapeHandling-Parameter im ConvertTo-Json cmdlet hinzufügen (#7775) (Danke @iSazonov!)
  • Hinzufügen -CustomPipeName zu pwsh und Enter-PSHostProcess (#8889)
  • Aktivieren Sie das Erstellen relativer symbolischer Links unter Windows mit New-Item (#8783)
  • Erlauben Sie Windows-Nutzern im Entwicklermodus, Symlinks ohne Elevation zu erstellen (#8534)
  • Aktivieren Write-Information zum Akzeptieren $null (#8774)
  • Korrektur Get-Help für erweiterte Funktionen mit MAM Hilfeinhalt (#8353)
  • Beheben Sie Get-Help das PSTypeName-Problem mit -Parameter, wenn nur ein Parameter deklariert ist (#8754) (Danke @pougetat!)
  • Token-Berechnungskorrektur für Get-Help Ausführung auf ScriptBlock zur Kommentarhilfe. (#8238) (Danke @hubuk!)
  • Ändere Get-Help Cmdlet -Parameter Parameter, sodass es String-Arrays akzeptiert (#8454) (Danke @sethvs!)
  • PAGER auflösen, wenn sein Pfad Spaces enthält (#8571) (Danke @pougetat!)
  • Fügen Sie in der Funktion 'Hilfe' eine Eingabeaufforderung hinzu less , um dem Benutzer das Beenden zu erklären (#7998)
  • Unterstützende Enum- und Char-Typen im Format-Hex cmdlet hinzufügen (#8191) (Danke @iSazonov!)
  • SollteProcess aus Format-Hex (#8178) entfernen
  • Füge neue Offset- und Count-Parameter Format-Hex hinzu und refaktoriere das Cmdlet (#7877) (Danke @iSazonov!)
  • Erlaube 'name' als Alias-Schlüssel für 'label' in ConvertTo-Html, erlaube den 'width'-Eintrag als ganzzahlige (#8426) (Danke @mklement0!)
  • Mach es in ConvertTo-Html (#8427) wieder möglich, dass skriptblockbasierte berechnete Eigenschaften funktionieren (Danke) @mklement0!)
  • Fügen Sie das CMDLET Join-String zum Erstellen von Text aus Pipeline-Eingaben hinzu (#7660) (Danke @powercode!)
  • Korrektur der Join-String FormatString-Parameterlogik des Cmdlets (#8449) (Danke @sethvs!)
  • Wechsel Clear-Host zurück zum Verwenden $RAWUI und Klarmachen über Fernsteuerung (#8609)
  • Ändere Clear-Host auf einfach aufgerufen [console]::clear und entferne das Clear Alias aus Unix (#8603)
  • LiteralPath fixieren Import-Csv , um an die Get-ChildItem Ausgabe zu binden (#8277) (Danke @iSazonov!)
  • Die Hilfefunktion sollte für AliasHelpInfo (#8552) keinen Pager verwenden.
  • Hinzufügen -UseMinimalHeader zur Start-Transcript Minimierung des Transkript-Headers (#8402) (Danke @lukexjeremy!)
  • Addieren Enable-ExperimentalFeature und Disable-ExperimentalFeature Cmdlets (#8318)
  • Stellen Sie alle Cmdlets aus PSDiagnostics frei, falls logman.exe verfügbar ist (#8366)
  • Entfernen Sie den Persisten-Parameter von New-PSDrive der Plattform non-Windows (#8291) (Danke@lukexjeremy!)
  • Unterstützung hinzufügen für cd + (#7206) (Danke @bergmeister!)
  • Aktivieren Set-Location -LiteralPath Sie die Arbeit mit Ordnern namens - und + (#8089)
  • Test-Path gibt zurück, $false wenn ein leerer oder $null Pfadwert angegeben ist (#8080) (Danke @vexx32!)
  • Erlaubt es, dass der dynamische Parameter zurückgegeben wird, auch wenn der Pfad keinem Anbieter entspricht (#7957)
  • Unterstützung Get-PSHostProcessInfo und Enter-PSHostProcess auf Unix-Plattformen (#8232)
  • Zuweisungen im Get-Content CMDLET reduzieren (#8103) (Danke @iSazonov!)
  • Aktivieren Sie Add-Content das Teilen des Lesezugriffs mit anderen Tools beim Schreiben von Inhalten (#8091)
  • Get/Add-Content wirft verbesserten Fehler beim Zielen eines Containers (#7823) (Danke @kvprasoon!)
  • Füge -Name, -NoUserOverrides und -ListAvailable Parameter zum Get-Culture cmdlet hinzu (#7702) (Danke @iSazonov!)
  • Fügen Sie ein einheitliches Attribut zur Komplettierung des Codierungsparameters hinzu. (#7732) (Danke @ThreeFive-O!)
  • Erlauben Sie numerische IDs und Namen registrierter Codepages in den Kodierungsparametern (#7636) (Danke @iSazonov!)
  • Behebung Rename-Item -Path mit Wildcard-Charakter (#7398) (Danke @kwkam!)
  • Wenn eine Start-Transcript Datei existiert, leert man die Datei statt löscht (#8131) (Danke @paalbra!)
  • Erstelle Add-Type Open-Source-Dateien mit FileAccess.Read und FileShare.Read explizit (#7915) (Danke @IISResetMe!)
  • Korrektur Enter-PSSession -ContainerId für das neueste Windows (#7883)
  • Ensure NestedModules-Eigenschaft wird von Test-ModuleManifest (#7859) ausgefüllt
  • Hülle zu Get-Date -UFormat hinzufügen %F (#7630) (Danke@britishben!)
  • Lösung Set-Service -Status Stopped , um Dienste mit Abhängigkeiten zu stoppen (#5525) (Danke @zhenggu!)