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 inWrite-Output
ist konsistent mit Windows PowerShell. (#9069) - Ergebnis
Join-String -InputObject 1,2,3
gleich1,2,3 | Join-String
Ergebnis (#8611) (Vielen Dank @sethvs!) - Hinzufügen
-Stable
zuSort-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 zuGet-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
$_
/$PSItem
catch{ }
Blöcken (#8020) (Vielen Dank @vexx32!) - Fix static method invocation type inference (#8018) (Vielen Dank @SeeminglyScience!)
- Create abgeleitete Typen für
Select-Object
, ,Group-Object
PSObject 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 auflocalhost
, 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 undEnter-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 dieGet-ChildItem
Ausgabe (#8277) (Vielen Dank @iSazonov!) - Hilfefunktion sollte Pager nicht für AliasHelpInfo verwenden (#8552)
- Hinzufügen
-UseMinimalHeader
zuStart-Transcript
zum Minimieren des Transkriptheaders (#8402) (Vielen Dank an @lukexjeremy!) - Hinzufügen der Cmdlets
Enable-ExperimentalFeature
undDisable-ExperimentalFeature
(#8318) - Verfügbar machen aller Cmdlets aus PSDiagnostics, wenn „logman.exe“ verfügbar ist (#8366)
- Remove Persist parameter from
New-PSDrive
on platformnon-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
undEnter-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
-Name
Parameter ,-NoUserOverrides
und-ListAvailable
zumGet-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 zuGet-Date
-UFormat (#7630) (Vielen Dank @britishben!) - Korrektur
Set-Service -Status Stopped
zum Beenden von Diensten mit Abhängigkeiten (#5525) (Vielen Dank an @zhenggu!)