Neuigkeiten in PowerShell Core 6.0What's New in PowerShell Core 6.0

PowerShell Core 6.0 ist eine neue plattformübergreifende (Windows, macOS und Linux) Open Source-Edition von PowerShell, die für heterogene Umgebungen und die Cloud entwickelt wurde.PowerShell Core 6.0 is a new edition of PowerShell that is cross-platform (Windows, macOS, and Linux), open-source, and built for heterogeneous environments and the hybrid cloud.

Aus .NET Framework in .NET Core übernommenMoved from .NET Framework to .NET Core

In PowerShell Core wird .NET Core 2.0 als Runtime verwendet.PowerShell Core uses .NET Core 2.0 as its runtime. Dank .NET Core 2.0 funktioniert PowerShell Core auf verschiedenen Plattformen (Windows, macOS und Linux)..NET Core 2.0 enables PowerShell Core to work on multiple platforms (Windows, macOS, and Linux). PowerShell Core macht auch die .NET Core 2.0-APIs verfügbar, die in PowerShell-Cmdlets und -Skripts verwendet werden.PowerShell Core also exposes the API set offered by .NET Core 2.0 to be used in PowerShell cmdlets and scripts.

In Windows PowerShell wurde die PowerShell-Engine mithilfe der .NET Framework Runtime gehostet.Windows PowerShell used the .NET Framework runtime to host the PowerShell engine. Windows PowerShell macht also die .NET Framework-APIs verfügbar.This means that Windows PowerShell exposes the API set offered by .NET Framework.

Die von .NET Core und .NET Framework gemeinsam genutzten APIs sind als Teil von .NET Standard definiert.The APIs shared between .NET Core and .NET Framework are defined as part of .NET Standard.

Weitere Informationen dazu, wie sich dies auf die Kompatibilität von Modulen und Skripts in PowerShell Core und Windows PowerShell auswirkt, finden Sie unter Abwärtskompatibilität mit Windows PowerShell.For more information on how this affects module/script compatibility between PowerShell Core and Windows PowerShell, see Backwards compatibility with Windows PowerShell.

Unterstützung für macOS und LinuxSupport for macOS and Linux

PowerShell unterstützt jetzt offiziell macOS und Linux, einschließlich:PowerShell now officially supports macOS and Linux, including:

  • Windows 7, 8.1 und 10Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016Windows Server 2008 R2, 2012 R2, 2016
  • Halbjährlicher Kanal von Windows ServerWindows Server Semi-Annual Channel
  • Ubuntu 14.04, 16.04 und 17.04Ubuntu 14.04, 16.04, and 17.04
  • Debian 8.7 und höher sowie Debian 9Debian 8.7+, and 9
  • CentOS 7CentOS 7
  • Red Hat Enterprise Linux 7Red Hat Enterprise Linux 7
  • OpenSUSE 42.2OpenSUSE 42.2
  • Fedora 25, 26Fedora 25, 26
  • macOS 10.12 und höhermacOS 10.12+

Unsere Community hat außerdem Pakete für die folgenden Plattformen beigetragen, die jedoch nicht offiziell unterstützt werden:Our community has also contributed packages for the following platforms, but they are not officially supported:

  • Arch LinuxArch Linux
  • Kali LinuxKali Linux
  • AppImage (funktioniert auf verschiedenen Linux-Plattformen)AppImage (works on multiple Linux platforms)

Für die folgenden Plattformen gibt es experimentelle (nicht unterstützte) Releases:We also have experimental (unsupported) releases for the following platforms:

  • Windows unter ARM32/ARM64Windows on ARM32/ARM64
  • Raspbian (Stretch)Raspbian (Stretch)

In PowerShell Core 6.0 wurden einige Änderungen vorgenommen, um die Funktionsweise auf Nicht-Windows-Systemen zu verbessern.A number of changes were made to in PowerShell Core 6.0 to make it work better on non-Windows systems. Einige davon sind sehr wichtig und gelten auch für Windows.Some of these are breaking changes, which also affect Windows. Andere betreffen nur Nicht-Windows-Installationen von PowerShell Core.Others are only present or applicable in non-Windows installations of PowerShell Core.

  • Unterstützung der nativen Verwendung von Platzhaltern in Befehlen auf Unix-PlattformenAdded support for native command globbing on Unix platforms.
  • Die more-Funktionalität respektiert $PAGER von Linux und entspricht standardmäßig less.The more functionality respects the Linux $PAGER and defaults to less. Jetzt können Sie also Platzhalter mit nativen Binärdateien bzw. Befehlen verwenden, z.B. ls *.txt.This means you can now use wildcards with native binaries/commands (for example, ls *.txt). (#3463)(#3463)
  • Der abschließende umgekehrte Schrägstrich wird bei nativen Befehlsargumenten automatisch mit einem Escapezeichen versehen.Trailing backslash is automatically escaped when dealing with native command arguments. (#4965)(#4965)
  • Der Schalter -ExecutionPolicy wird bei der Ausführung von PowerShell auf Nicht-Windows-Plattformen ignoriert, da das Signieren von Skripts derzeit nicht unterstützt wird.Ignore the -ExecutionPolicy switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (#3481)(#3481)
  • ConsoleHost berücksichtigt auf Unix-Plattformen jetzt NoEcho.Fixed ConsoleHost to honor NoEcho on Unix platforms. (#3801)(#3801)
  • Get-Help unterstützt nun Mustervergleiche auf Unix-Plattformen, bei denen die Groß- und Kleinschreibung nicht beachtet wird.Fixed Get-Help to support case insensitive pattern matching on Unix platforms. (#3852)(#3852)
  • powershell-Manpage wurde zum Paket hinzugefügt.powershell man-page added to package

ProtokollierungLogging

Unter macOS verwendet PowerShell native os_log-APIs zur Anmeldung beim einheitlichen Protokollierungssystem von Apple.On macOS, PowerShell uses the native os_log APIs to log to Apple's unified logging system. Unter Linux verwendet PowerShell Syslog, eine weit verbreitete Protokollierungslösung.On Linux, PowerShell uses Syslog, a ubiquitous logging solution.

DateisystemFilesystem

Unter macOS und Linux wurden einige Änderungen vorgenommen, damit für Dateinamen, die früher unter Windows nicht unterstützt wurden, nun Unterstützung angeboten wird:A number of changes have been made on macOS and Linux to support filename characters not traditionally supported on Windows:

  • Pfade, die an Cmdlets übergeben werden, sind jetzt schrägstrichagnostisch, d.h., dass sowohl „/“ als auch „\“ als Verzeichnistrennzeichen akzeptiert werden.Paths given to cmdlets are now slash-agnostic (both / and \ work as directory separator)
  • Die XDG Base Directory-Spezifikation wird eingehalten und standardmäßig verwendet:XDG Base Directory Specification is now respected and used by default:
    • Der Linux/macOS-Profilpfad lautet ~/.config/powershell/profile.ps1The Linux/macOS profile path is located at ~/.config/powershell/profile.ps1
    • Der Speicherpfad für den Verlauf lautet ~/.local/share/powershell/PSReadline/ConsoleHost_history.txtThe history save path is located at ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
    • Der Benutzermodulpfad lautet ~/.local/share/powershell/ModulesThe user module path is located at ~/.local/share/powershell/Modules
  • Unterstützung für Datei- und Ordnernamen mit Doppelpunkt unter Unix.Support for file and folder names containing the colon character on Unix. (#4959)(#4959)
  • Unterstützung für Skriptnamen oder vollständige Pfade, die Kommas enthalten.Support for script names or full paths that have commas. (#4136) (Vielen Dank an @TimCurwick)(#4136) (Thanks to @TimCurwick!)
  • Es wird erkannt, wann mit -LiteralPath die Platzhaltererweiterung für Navigations-Cmdlets unterdrückt wird.Detect when -LiteralPath is used to suppress wildcard expansion for navigation cmdlets. (#5038)(#5038)
  • Get-ChildItem wurde in der Funktionsweise an ls -R in *nix und native DIR /S-Windows-Befehle angeglichen.Updated Get-ChildItem to work more like the *nix ls -R and the Windows DIR /S native commands. Get-ChildItem gibt jetzt die symbolischen Links zurück, die bei einer rekursiven Suche gefunden wurden, und sucht nicht in den Verzeichnissen, zu denen die Links führen.Get-ChildItem now returns the symbolic links encountered during a recursive search and does not search the directories that those links target. (#3780)(#3780)

Unterscheidung nach Groß-/KleinschreibungCase sensitivity

Unter Linux und macOS wird die Groß-/Kleinschreibung im Gegensatz zu Windows meist beachtet, während unter Windows die Groß-/Kleinschreibung beibehalten wird.Linux and macOS tend to be case-sensitive while Windows is case-insensitive while preserving case. PowerShell unterscheidet nicht nach Groß-/Kleinschreibung.In general, PowerShell is case insensitive.

Bei Umgebungsvariablen wird unter macOS und Linux z.B. nach Groß-/Kleinschreibung unterschieden. Daher wurde die Groß-/Kleinschreibung der Umgebungsvariable PSModulePath standardisiert.For example, environment variables are case-sensitive on macOS and Linux, so the casing of the PSModulePath environment variable has been standardized. (#3255) Bei Import-Module wird die Groß-/Kleinschreibung beachtet, wenn der Modulname mit einem Dateipfad bestimmt werden soll.(#3255) Import-Module is case insensitive when it's using a file path to determine the module's name. (#5097)(#5097)

Unterstützung für parallele InstallationenSupport for side-by-side installations

PowerShell Core wird separat von Windows PowerShell installiert, konfiguriert und ausgeführt.PowerShell Core is installed, configured, and executed separately from Windows PowerShell. Außerdem enthält PowerShell Core ein „portables“ ZIP-Paket,PowerShell Core has a "portable" ZIP package. mit dem Sie beliebig viele Versionen an einem beliebigen Speicherort auf dem Datenträger installieren können, auch lokal für eine Anwendung, die PowerShell als Abhängigkeit verwendet.Using the ZIP package, you can install any number of versions anywhere on disk, including local to an application that takes PowerShell as a dependency. Eine parallele Installation erleichtert das Testen neuer PowerShell-Versionen und die Migration vorhandener Skripts.Side-by-side installation makes it easier to test new versions of PowerShell and migrating existing scripts over time. Sie ermöglicht außerdem Abwärtskompatibilität, da Skripts an bestimmte Versionen angeheftet werden können, die sie benötigen.Side-by-side also enables backwards compatibility as scripts can be pinned to specific versions that they require.

Hinweis

Der MSI-basierte Installer unter Windows führt standardmäßig eine direkte Updateinstallation aus.By default, the MSI-based installer on Windows does an in-place update install.

powershell(.exe) in pwsh(.exe) umbenanntRenamed powershell(.exe) to pwsh(.exe)

Der binäre Name für PowerShell Core wurde von powershell(.exe) in pwsh(.exe) geändert.The binary name for PowerShell Core has been changed from powershell(.exe) to pwsh(.exe). So können Benutzer PowerShell Core deterministisch auf Computern ausführen, um parallele Windows PowerShell- und PowerShell Core-Installationen zu unterstützen.This change provides a deterministic way for users to run PowerShell Core on machines to support side-by-side Windows PowerShell and PowerShell Core installations. pwsh ist außerdem viel kürzer und lässt sich einfacher eingeben.pwsh is also much shorter and easier to type.

Weitere Änderungen in pwsh(.exe) im Vergleich zu powershell.exe:Additional changes to pwsh(.exe) from powershell.exe:

  • Der erste positionelle Parameter wurde von -Command in -File geändert.Changed the first positional parameter from -Command to -File. #!, auch Shebang genannt, wird damit nicht mehr in PowerShell-Skripts benötigt, die über Nicht-PowerShell-Shells auf Nicht-Windows-Plattformen ausgeführt werden.This change fixes the usage of #! (aka as a shebang) in PowerShell scripts that are being executed from non-PowerShell shells on non-Windows platforms. Damit können Sie auch Befehle wie pwsh foo.ps1 oder pwsh fooScript ausführen, ohne -File anzugeben.It also means that you can run commands like pwsh foo.ps1 or pwsh fooScript without specifying -File. Beim Versuch, einen Befehl wie pwsh.exe -Command Get-Command auszuführen, muss für diese Änderung jedoch -c oder -Command explizit angegeben werden.However, this change requires that you explicitly specify -c or -Command when trying to run commands like pwsh.exe -Command Get-Command. (#4019)(#4019)
  • PowerShell Core akzeptiert den Schalter -i (oder -Interactive), um eine interaktive Shell anzugeben.PowerShell Core accepts the -i (or -Interactive) switch to indicate an interactive shell. (#3558) Daher kann PowerShell als Standard-Shell auf Unix-Plattformen verwendet werden.(#3558) This allows PowerShell to be used as a default shell on Unix platforms.
  • Die Parameter -importsystemmodules und -psconsoleFile wurden aus pwsh.exe entfernt.Removed parameters -importsystemmodules and -psconsoleFile from pwsh.exe. (#4995)(#4995)
  • pwsh -version wurde geändert, und Hilfe für pwsh.exe bei der Ausrichtung an anderen nativen Tools wurde integriert.Changed pwsh -version and built-in help for pwsh.exe to align with other native tools. (#4958 & #4931) (Vielen Dank an @iSazonov)(#4958 & #4931) (Thanks @iSazonov)
  • Ungültige Argument-Fehlermeldungen für -File und -Command und mit den Unix-Standards konsistente Exitcodes (#4573)Invalid argument error messages for -File and -Command and exit codes consistent with Unix standards (#4573)
  • Parameter -WindowStyle unter Windows hinzugefügt.Added -WindowStyle parameter on Windows. (#4573) Paketbasierte Installationsupdates auf Nicht-Windows-Plattformen werden direkt installiert.(#4573) Similarly, package-based installations updates on non-Windows platforms are in-place updates.

Abwärtskompatibilität mit Windows PowerShellBackwards compatibility with Windows PowerShell

Das Ziel von PowerShell Core ist die höchstmögliche Kompatibilität mit Windows PowerShell.The goal of PowerShell Core is to remain as compatible as possible with Windows PowerShell. PowerShell Core verwendet .NET Standard, um binäre Kompatibilität mit vorhandenen .NET-Assemblys bereitzustellen.PowerShell Core uses .NET Standard 2.0 to provide binary compatibility with existing .NET assemblies. Viele PowerShell-Module hängen von diesen Assemblys (häufig DLL-Dateien) ab. Daher lässt .NET Standard zu, dass sie weiterhin .NET Core nutzen.Many PowerShell modules depend on these assemblies (often times DLLs), so .NET Standard allows them to continue working with .NET Core. PowerShell Core enthält auch eine Heuristik, mit der in bekannten Ordnern wie dem üblichen Speicherort des globalen Assemblycache auf dem Datenträger nach .NET Framework-DLL-Abhängigkeiten gesucht wird.PowerShell Core also includes a heuristic to look in well-known folders--like where the Global Assembly Cache typically resides on disk--to find .NET Framework DLL dependencies.

Weitere Informationen zu .NET Standard finden Sie auf dem .NET Blog, in diesem YouTube und in diesen FAQ auf GitHub.You can learn more about .NET Standard on the .NET Blog, in this YouTube video, and via this FAQ on GitHub.

Die PowerShell-Sprache und die „integrierten“ Module (z.B. Microsoft.PowerShell.Management und Microsoft.PowerShell.Utility) sollten genauso funktionieren wie in Windows PowerShell.Best efforts have been made to ensure that the PowerShell language and "built-in" modules (like Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility, etc.) work the same as they do in Windows PowerShell. In vielen Fällen haben wir mit der Hilfe der Community Fehlerkorrekturen und neue Funktionen für diese Cmdlets eingebaut.In many cases, with the help of the community, we've added new capabilities and bug fixes to those cmdlets. In einigen Fällen wurde Funktionalität aufgrund einer fehlenden Abhängigkeit in zugrunde liegenden .NET Ebenen entfernt oder ist nicht verfügbar.In some cases, due to a missing dependency in underlying .NET layers, functionality was removed or is unavailable.

Die meisten der in Windows enthaltenen Module (z.B. DnsClient, Hyper-V, NetTCPIP, Storage usw.) und andere Microsoft-Produkte, einschließlich Azure und Office, wurden noch nicht explizit auf .NET Core portiert.Most of the modules that ship as part of Windows (for example, DnsClient, Hyper-V, NetTCPIP, Storage, etc.) and other Microsoft products including Azure and Office have not been explicitly ported to .NET Core yet. Das PowerShell-Team arbeitet mit diesen Produktgruppen und -teams, um ihre vorhandenen Module zu überprüfen und in PowerShell Core zu portieren.The PowerShell team is working with these product groups and teams to validate and port their existing modules to PowerShell Core. Mit .NET Standard und CDXML scheinen viele dieser herkömmliche Windows PowerShell-Module in PowerShell Core zu funktionieren. Dies wurde bisher jedoch noch nicht formal validiert, und sie werden nicht offiziell unterstützt.With .NET Standard and CDXML, many of these traditional Windows PowerShell modules do seem to work in PowerShell Core, but they have not been formally validated, and they are not formally supported.

Durch die Installation des Moduls WindowsPSModulePath können Sie Windows PowerShell-Module durch Anfügen von PSModulePath aus Windows PowerShell an PSModulePath aus PowerShell Core verwenden.By installing the WindowsPSModulePath module, you can use Windows PowerShell modules by appending the Windows PowerShell PSModulePath to your PowerShell Core PSModulePath.

Installieren Sie zunächst das WindowsPSModulePath-Modul aus dem PowerShell-Katalog:First, install the WindowsPSModulePath module from the PowerShell Gallery:

# Add `-Scope CurrentUser` if you're installing as non-admin
Install-Module WindowsPSModulePath -Force

Führen Sie nach der Installation dieses Moduls das Add-WindowsPSModulePath-Cmdlet aus, um PSModulePath aus Windows PowerShell zu PowerShell Core hinzuzufügen:After installing this module, run the Add-WindowsPSModulePath cmdlet to add the Windows PowerShell PSModulePath to PowerShell Core:

# Add this line to your profile if you always want Windows PowerShell PSModulePath
Add-WindowsPSModulePath

Docker-UnterstützungDocker support

PowerShell Core enthält Unterstützung für Docker-Container für alle wichtigen Plattformen, die wir unterstützen, einschließlich mehrerer Linux-Distributionen, Windows Server Core und Nano Server.PowerShell Core adds support for Docker containers for all the major platforms we support (including multiple Linux distros, Windows Server Core, and Nano Server).

Eine vollständige Liste finden Sie unter „Tags“ unter microsoft/powershell im Docker-Hub.For a complete list, check out the tags on microsoft/powershell on Docker Hub. Weitere Informationen zu Docker und PowerShell Core finden Sie unter Docker auf GitHub.For more information on Docker and PowerShell Core, see Docker on GitHub.

SSH-basiertes PowerShell-RemotingSSH-based PowerShell Remoting

Das PowerShell-Remoting-Protokoll (PSRP) funktioniert jetzt nicht nur mit dem herkömmlichen WinRM-basierten PSRP, sondern auch mit dem Secure Shell-Protokoll (SSH).The PowerShell Remoting Protocol (PSRP) now works with the Secure Shell (SSH) protocol in addition to the traditional WinRM-based PSRP.

Sie können also Cmdlets wie Enter-PSSession und New-PSSession verwenden und sich mithilfe von SSH authentifizieren.This means that you can use cmdlets like Enter-PSSession and New-PSSession and authenticate using SSH. Dazu müssen Sie PowerShell nur als Subsystem mit einem OpenSSH-basierten SSH-Server registrieren. Anschließend können Sie Ihre vorhandene SSH-basierte Authentifizierung (z.B. Kennwörter oder private Schlüssel) mit der herkömmlichen PSSession-Semantik verwenden.All you have to do is register PowerShell as a subsystem with an OpenSSH-based SSH server, and you can use your existing SSH-based authenticate mechanisms (like passwords or private keys) with the traditional PSSession semantics.

Weitere Informationen zum Konfigurieren und Verwenden von SSH-basiertem Remoting finden Sie unter PowerShell Remoting Over SSH (PowerShell-Remoting über SSH).For more information on configuring and using SSH-based remoting, see PowerShell Remoting over SSH.

Die Standardcodierung ist UTF-8 ohne BOM mit Ausnahme von New-ModuleManifest.Default encoding is UTF-8 without a BOM except for New-ModuleManifest

Früher haben Windows PowerShell-Cmdlets wie Get-Content und Set-Content unterschiedliche Codierungen wie ASCII und UTF-16 verwendet.In the past, Windows PowerShell cmdlets like Get-Content, Set-Content used different encodings, such as ASCII and UTF-16. Dadurch kam es beim Kombinieren von Cmdlets ohne Angabe einer Codierung immer wieder zu Problemen.The variance in encoding defaults created problems when mixing cmdlets without specifying an encoding.

Nicht-Windows-Plattformen verwenden normalerweise UTF-8 ohne eine Bytereihenfolge-Marke (BOM) als Standardcodierung für Textdateien.Non-Windows platforms traditionally use UTF-8 without a Byte Order Mark (BOM) as the default encoding for text files. Viele Windows-Anwendungen und -Tools kehren UTF-16 jedoch den Rücken und nutzen die BOM-freie UTF-8-Codierung.More Windows applications and tools are moving away from UTF-16 and towards BOM-less UTF-8 encoding. Daher wurde die Standardcodierung in PowerShell Core geändert, damit sie der des größeren Ökosystems entspricht.PowerShell Core changes the default encoding to conform with the broader ecosystems.

Dies bedeutet, dass alle integrierten-Cmdlets, die den Parameter -Encoding verwenden, auch standardmäßig den Wert UTF8NoBOM nutzen.This means that all built-in cmdlets that use the -Encoding parameter use the UTF8NoBOM value by default. Die folgenden Cmdlets sind von dieser Änderung betroffen:The following cmdlets are affected by this change:

  • Add-ContentAdd-Content
  • Export-ClixmlExport-Clixml
  • Export-CsvExport-Csv
  • Export-PSSessionExport-PSSession
  • Format-HexFormat-Hex
  • Get-ContentGet-Content
  • Import-CsvImport-Csv
  • Out-FileOut-File
  • Select-StringSelect-String
  • Send-MailMessageSend-MailMessage
  • Set-ContentSet-Content

Diese Cmdlets wurden auch aktualisiert, sodass der Parameter -Encoding universell System.Text.Encoding akzeptiert.These cmdlets have also been updated so that the -Encoding parameter universally accepts System.Text.Encoding.

Der Standardwert von $OutputEncoding wurde auch in UTF-8 geändert.The default value of $OutputEncoding has also been changed to UTF-8.

Es hat sich bewährt, Codierungen in Skripts mithilfe des Parameters -Encoding explizit festzulegen, um plattformübergreifend deterministisches Verhalten hervorzurufen.As a best practice, you should explicitly set encodings in scripts using the -Encoding parameter to produce deterministic behavior across platforms.

Das Cmdlet New-ModuleManifest verfügt nicht über den Parameter Encoding.New-ModuleManifest cmdlet does not have Encoding parameter. Die Codierung der mit dem Cmdlet New-ModuleManifest erstellten Modulmanifestdatei (PSD1) hängt von der Umgebung ab: In einer PowerShell Core-Umgebung unter Linux lautet die Codierung UTF-8 (ohne BOM). Andernfalls wird die Codierung UTF-16 (mit BOM) verwendet.The encoding of the module manifest (.psd1) file created with New-ModuleManifest cmdlet depends on environment: if it is PowerShell Core running on Linux then encoding is UTF-8 (no BOM); otherwise encoding is UTF-16 (with BOM). (#3940)(#3940)

Unterstützung eines kaufmännischen Und-Zeichens (&) am Ende einer Pipeline (#3360)Support backgrounding of pipelines with ampersand (&) (#3360)

Wenn Sie ein & am Ende einer Pipeline einfügen, wird die Pipeline als PowerShell-Auftrag ausgeführt.Putting & at the end of a pipeline causes the pipeline to be run as a PowerShell job. In diesem Fall wird ein Auftragsobjekt zurückgegeben.When a pipeline is backgrounded, a job object is returned. Wird die Pipeline als Auftrag ausgeführt, kann sie mithilfe aller Standard-*-Job-Cmdlets verwaltet werden.Once the pipeline is running as a job, all of the standard *-Job cmdlets can be used to manage the job. Die in der Pipeline verwendeten Variablen (außer der prozessspezifischen) werden automatisch in den Auftrag kopiert, sodass Copy-Item $foo $bar & funktioniert.Variables (ignoring process-specific variables) used in the pipeline are automatically copied to the job so Copy-Item $foo $bar & just works. Der Auftrag wird auch im aktuellen Verzeichnis statt im Basisverzeichnis des Benutzers ausgeführt.The job is also run in the current directory instead of the user's home directory. Weitere Informationen zu PowerShell-Aufträgen finden Sie unter about_Jobs.For more information about PowerShell jobs, see about_Jobs.

Semantische VersionsverwaltungSemantic versioning

  • SemanticVersion ist nun mit SemVer 2.0 kompatibel.Made SemanticVersion compatible with SemVer 2.0. (#5037) (Vielen Dank an @iSazonov)(#5037) (Thanks @iSazonov!)
  • Standard-ModuleVersion in New-ModuleManifest zu 0.0.1 geändert, um SemVer zu entsprechen.Changed default ModuleVersion in New-ModuleManifest to 0.0.1 to align with SemVer. (#4842) (Vielen Dank an @LDSpits)(#4842) (Thanks @LDSpits)
  • semver wurde als Typaccelerator für System.Management.Automation.SemanticVersion hinzugefügt.Added semver as a type accelerator for System.Management.Automation.SemanticVersion. (#4142) (Vielen Dank an @oising)(#4142) (Thanks to @oising!)
  • Der Vergleich zwischen einer SemanticVersion- und einer Version-Instanz, der nur mit Major- und Minor-Versionswerten erstellt wurde, wurde aktiviert.Enabled comparison between a SemanticVersion instance and a Version instance that is constructed only with Major and Minor version values.

SprachupdatesLanguage updates

  • Die Analyse von Unicode-Escapesequenzen wurde implementiert, sodass Benutzer Unicode-Zeichen als Argumente, Zeichenfolgen oder Variablennamen verwenden können.Implement Unicode escape parsing so that users can use Unicode characters as arguments, strings, or variable names. (#3958) (Vielen Dank an @rkeithhill)(#3958) (Thanks to @rkeithhill!)
  • Es wurde ein neues Escapezeichen für die ESC-TASTE hinzugefügt: `e.Added new escape character for ESC: `e
  • Es wurde Unterstützung für das Konvertieren von Enumerationen in Zeichenfolgen hinzugefügt. (#4318) (Vielen Dank an @KirkMunro)Added support for converting enums to string (#4318) (Thanks @KirkMunro)
  • Probleme bei der Umwandlung eines Arrays mit einem einzigen Element in eine generische Auflistung wurden behoben.Fixed casting single element array to a generic collection. (#3170)(#3170)
  • Dem ..-Operator wurde eine Überladung des Zeichenbereichs hinzugefügt, sodass 'a'..'z' Buchstaben von „a“ bis „z“ zurückgibt.Added character range overload to the .. operator, so 'a'..'z' returns characters from 'a' to 'z'. (#5026) (Vielen Dank an @IISResetMe)(#5026) (Thanks @IISResetMe!)
  • Schreibgeschützte Variablen werden bei der Variablenzuweisung nicht mehr überschrieben.Fixed variable assignment to not overwrite read-only variables
  • Lokale Variablen werden beim Dot-Sourcing von Skript-Cmdlets automatisch per Push an „DottedScopes“ übertragen. (#4709)Push locals of automatic variables to 'DottedScopes' when dotting script cmdlets (#4709)
  • Die Optionen „Singleline“ und „Multiline“ können jetzt im Split-Operator verwendet werden. (#4721) (Vielen Dank an @iSazonov)Enable use of 'Singleline, Multiline' option in split operator (#4721) (Thanks @iSazonov)

Engine-UpdatesEngine updates

  • $PSVersionTable hat vier neue Eigenschaften:$PSVersionTable has four new properties:
    • PSEdition: Dieser Wert ist unter PowerShell Core auf Core festgelegt und unter Windows PowerShell auf Desktop.PSEdition: This is set to Core on PowerShell Core and Desktop on Windows PowerShell
    • GitCommitId: Dies ist die Git-Commit-ID des Git-Branchs oder -Tags, in dem PowerShell erstellt wurde.GitCommitId: This is the Git commit ID of the Git branch or tag where PowerShell was built. Bei veröffentlichten Builds ist sie wahrscheinlich mit PSVersion identisch.On released builds, it will likely be the same as PSVersion.
    • OS: Dies ist eine von [System.Runtime.InteropServices.RuntimeInformation]::OSDescription zurückgegebene Betriebssystem-Versionszeichenfolge.OS: This is an OS version string returned by [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
    • Platform: Dieser Wert wird von [System.Environment]::OSVersion.Platform zurückgegeben. Unter Windows ist er auf Win32NT, unter macOS auf Unix und unter Linux auf Unix festgelegt.Platform: This is returned by [System.Environment]::OSVersion.Platform It is set to Win32NT on Windows, Unix on macOS, and Unix on Linux.
  • Die BuildVersion-Eigenschaft wurde aus $PSVersionTable entfernt.Removed the BuildVersion property from $PSVersionTable. Diese Eigenschaft war stark an die Windows-Buildversion gebunden.This property was strongly tied to the Windows build version. Stattdessen wird empfohlen, die genaue Version von PowerShell Core mit GitCommitId abzurufen.Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core. (#3877) (Vielen Dank an @iSazonov)(#3877) (Thanks to @iSazonov!)
  • Die Eigenschaft ClrVersion wurde aus $PSVersionTable entfernt.Remove ClrVersion property from $PSVersionTable. Diese Eigenschaft ist für .NET Core irrelevant und wurde nur für die Abwärtskompatibilität in bestimmten Fällen beibehalten, die nicht für PowerShell gelten.This property is irrelevant for .NET Core, and was only preserved in .NET Core for specific legacy purposes that are inapplicable to PowerShell.
  • Es wurden die drei automatischen Variablen $IsWindows, $IsMacOs und $IsLinux hinzugefügt, mit denen festgestellt werden kann, ob PowerShell unter einem bestimmten Betriebssystem ausgeführt wird.Added three new automatic variables to determine whether PowerShell is running in a given OS: $IsWindows, $IsMacOs, and $IsLinux.
  • GitCommitId wurde dem PowerShell Core-Banner hinzugefügt.Add GitCommitId to PowerShell Core banner. Nun müssen Sie beim Start von PowerShell nicht $PSVersionTable ausführen, um die Version zu erhalten.Now you don't have to run $PSVersionTable as soon as you start PowerShell to get the version! (#3916) (Vielen Dank an @iSazonov)(#3916) (Thanks to @iSazonov!)
  • Es wurde eine JSON-Konfigurationsdatei namens powershell.config.json in $PSHome hinzugefügt, in der einige Einstellungen vor der Startzeit gespeichert werden (z.B. ExecutionPolicy).Add a JSON config file called powershell.config.json in $PSHome to store some settings required before startup time (e.g. ExecutionPolicy).
  • Es werden keine Pipelines bei der Ausführung von ausführbaren Windows-Dateien blockiert.Don't block pipeline when running Windows EXE's
  • Die Enumeration von COM-Auflistungen wurde aktiviert.Enabled enumeration of COM collections. (#4553)(#4553)

Cmdlet-UpdatesCmdlet updates

Neue CmdletsNew cmdlets

  • Get-Uptime wurde Microsoft.PowerShell.Utility hinzugefügt.Add Get-Uptime to Microsoft.PowerShell.Utility.
  • Der Befehl Remove-Alias wurde hinzugefügt.Add Remove-Alias Command. (#5143) (Vielen Dank an @PowershellNinja)(#5143) (Thanks @PowershellNinja!)
  • Dem Verwaltungsmodul wurde Remove-Service hinzugefügt.Add Remove-Service to Management module. (#4858) (Vielen Dank an @joandrsn)(#4858) (Thanks @joandrsn!)

Web-CmdletsWeb cmdlets

  • Unterstützung für die Zertifikatauthentifizierung wurde hinzugefügt.Add certificate authentication support for web cmdlets. (#4646) (Vielen Dank an @markekraus)(#4646) (Thanks @markekraus)
  • Unterstützung für Inhaltsheader wurde hinzugefügt.Add support for content headers to web cmdlets. (#4494 & #4640) (Vielen Dank an @markekraus)(#4494 & #4640) (Thanks @markekraus)
  • Unterstützung für Header mit mehreren Links wurde hinzugefügt.Add multiple link header support to Web Cmdlets. (#5265) (Vielen Dank an @markekraus)(#5265) (Thanks @markekraus!)
  • Unterstützung für die Linkheader-Paginierung (#3828)Support Link header pagination in web cmdlets (#3828)
    • Wenn die Antwort einen Linkheader enthält, wird für Invoke-WebRequest eine RelationLink-Eigenschaft als Wörterbuch erstellt, das die URLs und rel-Attribute darstellt. Um die Verwendung zu erleichtern, wird außerdem sichergestellt, dass die URLs absolut sind.For Invoke-WebRequest, when the response includes a Link header we create a RelationLink property as a Dictionary representing the URLs and rel attributes and ensure the URLs are absolute to make it easier for the developer to use.
    • Wir machen für Invoke-RestMethod einen -FollowRelLink-Schalter verfügbar, wenn die Antwort einen Linkheader enthält, der automatisch next rel-Links folgt, bis sie nicht mehr vorhanden sind, oder sobald der optionale Parameterwert -MaximumFollowRelLink erreicht wird.For Invoke-RestMethod, when the response includes a Link header we expose a -FollowRelLink switch to automatically follow next rel links until they no longer exist or once we hit the optional -MaximumFollowRelLink parameter value.
  • Der Parameter -CustomMethod wurde hinzugefügt, um die Verwendung nicht standardmäßiger Methodenverben zu ermöglichen.Add -CustomMethod parameter to web cmdlets to allow for non-standard method verbs. (#3142) (Vielen Dank an @Lee303)(#3142) (Thanks to @Lee303!)
  • Unterstützung für SslProtocol wurde hinzugefügt.Add SslProtocol support to Web Cmdlets. (#5329) (Vielen Dank an @markekraus)(#5329) (Thanks @markekraus!)
  • Mehrteilige Unterstützung wurde hinzugefügt.Add Multipart support to web cmdlets. (#4782) (Vielen Dank an @markekraus)(#4782) (Thanks @markekraus)
  • -NoProxy wurde Web-Cmdlets hinzugefügt, damit sie die systemweite Proxyeinstellung ignorieren.Add -NoProxy to web cmdlets so that they ignore the system-wide proxy setting. (#3447) (Vielen Dank an @TheFlyingCorpse)(#3447) (Thanks to @TheFlyingCorpse!)
  • Der Benutzer-Agent von Web-Cmdlets meldet nun die Betriebssystemplattform. (#4937) (Vielen Dank an @LDSpits)User Agent of Web Cmdlets now reports the OS platform (#4937) (Thanks @LDSpits)
  • Der -SkipHeaderValidation-Schalter wurde hinzugefügt, um das Hinzufügen von Headern ohne Überprüfung des Headerwerts zu unterstützen.Add -SkipHeaderValidation switch to web cmdlets to support adding headers without validating the header value. (#4085)(#4085)
  • Falls erforderlich, können Sie festlegen, dass Web-Cmdlets das HTTPS-Zertifikat auf dem Server nicht überprüfen sollen.Enable web cmdlets to not validate the HTTPS certificate of the server if required.
  • Es wurden Authentifizierungsparameter hinzugefügt.Add authentication parameters to web cmdlets. (#5052) (Vielen Dank an @markekraus)(#5052) (Thanks @markekraus)
    • Fügen Sie -Authentication hinzu, um drei Optionen bereitzustellen: „Basic“, „OAuth“ und „Bearer“.Add -Authentication that provides three options: Basic, OAuth, and Bearer.
    • Es wurde -Token hinzugefügt, um das Bearer-Token für die Optionen „OAuth“ und „Bearer“ zu erhalten.Add -Token to get the bearer token for OAuth and Bearer options.
    • Es wurde -AllowUnencryptedAuthentication hinzugefügt, um die Authentifizierung zu umgehen, die für alle Transportschemas außer HTTPS bereitgestellt wird.Add -AllowUnencryptedAuthentication to bypass authentication that is provided for any transport scheme other than HTTPS.
  • -ResponseHeadersVariable wurde Invoke-RestMethod hinzugefügt, um die Erfassung von Antwortheadern zu aktivieren.Add -ResponseHeadersVariable to Invoke-RestMethod to enable the capture of response headers. (#4888) (Vielen Dank an @markekraus)(#4888) (Thanks @markekraus)
  • Web-Cmdlets enthalten nun die HTTP-Antwort in der Ausnahme, wenn der Statuscode der Antwort nicht erfolgreich ist.Fix web cmdlets to include the HTTP response in the exception when the response status code is not success. (#3201)(#3201)
  • Der UserAgent von Web-Cmdlets wurde von WindowsPowerShell in PowerShell geändert.Change web cmdlets UserAgent from WindowsPowerShell to PowerShell. (#4914) (Vielen Dank an @markekraus)(#4914) (Thanks @markekraus)
  • Invoke-RestMethod wurde explizite ContentType-Erkennung hinzugefügt. (#4692)Add explicit ContentType detection to Invoke-RestMethod (#4692)
  • -SkipHeaderValidation von Web-Cmdlets funktioniert jetzt mit nicht standardmäßigen User-Agent-Headern.Fix web cmdlets -SkipHeaderValidation to work with non-standard User-Agent headers. (#4479 & #4512) (Vielen Dank an @markekraus)(#4479 & #4512) (Thanks @markekraus)

JSON-CmdletsJSON cmdlets

  • ConvertFrom-Json wurde -AsHashtable hinzugefügt, sodass stattdessen ein Hashtable zurückgegeben wird.Add -AsHashtable to ConvertFrom-Json to return a Hashtable instead. (#5043) (Vielen Dank an @bergmeister)(#5043) (Thanks @bergmeister!)
  • Für die ConvertTo-Json-Ausgabe wird ein ansprechenderer Formatierer verwendet.Use prettier formatter with ConvertTo-Json output. (#2787) (Vielen Dank an @kittholland)(#2787) (Thanks to @kittholland!)
  • ConvertTo-Json wurde Unterstützung für die Jobject-Serialisierung hinzugefügt.Add Jobject serialization support to ConvertTo-Json. (#5141)(#5141)
  • ConvertFrom-Json deserialisiert nun ein Array von Zeichenfolgen aus der Pipeline, die zusammen eine vollständige JSON-Zeichenfolge bilden,Fix ConvertFrom-Json to deserialize an array of strings from the pipeline that together construct a complete JSON string. d.h., Zeilenumbrüche verursachen keine Fehler bei der JSON-Analyse mehr.This fixes some cases where newlines would break JSON parsing. (#3823)(#3823)
  • Der für System.Array definierte AliasProperty "Count" wurde entfernt.Remove the AliasProperty "Count" defined for System.Array. Dadurch wird die nicht wichtige Count-Eigenschaft aus einigen ConvertFrom-Json-Ausgaben entfernt.This removes the extraneous Count property on some ConvertFrom-Json output. (#3231) (Vielen Dank an @PetSerAl)(#3231) (Thanks to @PetSerAl!)

CSV-CmdletsCSV cmdlets

  • PSTypeName-Unterstützung wurde für Import-Csv und ConvertFrom-Csv hinzugefügt.Add PSTypeName Support for Import-Csv and ConvertFrom-Csv. (#5389) (Vielen Dank an @markekraus)(#5389) (Thanks @markekraus!)
  • Import-Csv unterstützt nun CR, LF und CRLF als Zeilentrennzeichen.Make Import-Csv support CR, LF, and CRLF as line delimiters. (#5363) (Vielen Dank an @iSazonov)(#5363) (Thanks @iSazonov!)
  • -NoTypeInformation ist nun der Standard für Export-Csv und ConvertTo-Csv.Make -NoTypeInformation the default on Export-Csv and ConvertTo-Csv. (#5164) (Vielen Dank an @markekraus)(#5164) (Thanks @markekraus)

Dienst-CmdletsService cmdlets

  • Den von Get-Service zurückgegebenen ServiceController-Objekten wurden die Eigenschaften UserName, Description, DelayedAutoStart, BinaryPathName und StartupType hinzugefügt.Add properties UserName, Description, DelayedAutoStart, BinaryPathName, and StartupType to the ServiceController objects returned by Get-Service. (#4907) (Vielen Dank an @joandrsn)(#4907) (Thanks @joandrsn)
  • Es wurden Funktionen zum Festlegen von Anmeldeinformationen für den Set-Service-Befehl hinzugefügt.Add functionality to set credentials on Set-Service command. (#4844) (Vielen Dank an @joandrsn)(#4844) (Thanks @joandrsn)

Weitere CmdletsOther cmdlets

  • Get-ChildItem wurde ein Parameter namens -FollowSymlink hinzugefügt, der bedarfsgesteuert symbolische Verknüpfungen mit Prüfungen auf Linkschleifen durchläuft.Add a parameter to Get-ChildItem called -FollowSymlink that traverses symlinks on demand, with checks for link loops. (#4020)(#4020)
  • Add-Type wurde aktualisiert und unterstützt nun CSharpVersion7.Update Add-Type to support CSharpVersion7. (#3933) (Vielen Dank an @iSazonov)(#3933) (Thanks to @iSazonov)
  • Das Microsoft.PowerShell.LocalAccounts-Modul wurde aufgrund der Verwendung von nicht unterstützten APIs entfernt, bis eine bessere Lösung verfügbar ist.Remove the Microsoft.PowerShell.LocalAccounts module due to the use of unsupported APIs until a better solution is found. (#4302)(#4302)
  • *-Counter-Cmdlets wurden aufgrund der Verwendung von nicht unterstützten APIs aus Microsoft.PowerShell.Diagnostics entfernt, bis eine bessere Lösung verfügbar ist.Remove the *-Counter cmdlets in Microsoft.PowerShell.Diagnostics due to the use of unsupported APIs until a better solution is found. (#4303)(#4303)
  • Support für Invoke-Item -Path <folder> wurde hinzugefügt.Add support for Invoke-Item -Path <folder>. (#4262)(#4262)
  • Split-Path wurden die Schalter -Extension und -LeafBase hinzugefügt, sodass Pfade zwischen der Dateierweiterung und dem Rest des Dateinamens aufgeteilt werden können.Add -Extension and -LeafBase switches to Split-Path so that you can split paths between the filename extension and the rest of the filename. (#2721) (Vielen Dank an @powercode)(#2721) (Thanks to @powercode!)
  • Sort-Object wurden die Parameter -Top und -Bottom für die Sortierung „Top/Bottom N“ hinzugefügt.Add parameters -Top and -Bottom to Sort-Object for Top/Bottom N sort
  • Der übergeordnete Prozess eines Prozesses wurde durch Hinzufügen von CodeProperty "Parent" zu System.Diagnostics.Process verfügbar gemacht.Expose a process' parent process by adding the CodeProperty "Parent" to System.Diagnostics.Process. (#2850) (Vielen Dank an @powercode)(#2850) (Thanks to @powercode!)
  • Für Speicherspalten von Get-Process werden MB statt KB verwendet.Use MB instead of KB for memory columns of Get-Process
  • Der Schalter -NoNewLine wurde Out-String hinzugefügt.Add -NoNewLine switch for Out-String. (#5056) (Vielen Dank an @raghav710)(#5056) (Thanks @raghav710)
  • Das Cmdlet Move-Item berücksichtigt nun die Parameter -Include, -Exclude und -Filter.Move-Item cmdlet honors -Include, -Exclude, and -Filter parameters. (#3878)(#3878)
  • * kann jetzt in Registrierungspfaden für Remove-Item verwendet werden.Allow * to be used in registry path for Remove-Item. (#4866)(#4866)
  • -Title wurde Get-Credential hinzugefügt und die Benutzeroberfläche bei Aufforderungen plattformübergreifend vereinheitlicht.Add -Title to Get-Credential and unify the prompt experience across platforms.
  • Der Parameter -TimeOut wurde Test-Connection hinzugefügt.Add the -TimeOut parameter to Test-Connection. (#2492)(#2492)
  • Get-AuthenticodeSignature-Cmdlets können nun Dateisignatur-Zeitstempel erhalten.Get-AuthenticodeSignature cmdlets can now get file signature timestamp. (#4061)(#4061)
  • Der nicht unterstützte -ShowWindow-Schalter wurde aus Get-Help entfernt.Remove unsupported -ShowWindow switch from Get-Help. (#4903)(#4903)
  • Get-Content -Delimiter enthält nun nicht mehr das von den Arrayelementen zurückgegebene Trennzeichen. (#3706) (Vielen Dank an @mklement0)Fix Get-Content -Delimiter to not include the delimiter in the array elements returned (#3706) (Thanks @mklement0)
  • ConvertTo-HTML wurden die Parameter Meta, Charset und Transitional hinzugefügt. (#4184) (Vielen Dank an @ergo3114)Add Meta, Charset, and Transitional parameters to ConvertTo-HTML (#4184) (Thanks @ergo3114)
  • Dem Get-ComputerInfo-Ergebnis wurden die Eigenschaften WindowsUBR und WindowsVersion hinzugefügt.Add WindowsUBR and WindowsVersion properties to Get-ComputerInfo result
  • -Group wurde der Get-Verb-Parameter hinzugefügt.Add -Group parameter to Get-Verb
  • New-FileCatalog und Test-FileCatalog wurde Unterstützung für ShouldProcess hinzugefügt (behebt -WhatIf und -Confirm).Add ShouldProcess support to New-FileCatalog and Test-FileCatalog (fixes -WhatIf and -Confirm). (#3074) (Vielen Dank an @iSazonov)(#3074) (Thanks to @iSazonov!)
  • Dem Cmdlet Start-Process wurde der -WhatIf-Schalter hinzugefügt. (#4735) (Vielen Dank an @sarithsutha)Add -WhatIf switch to Start-Process cmdlet (#4735) (Thanks @sarithsutha)
  • Vielen vorhandenen Parametern wurde ValidateNotNullOrEmpty hinzugefügt.Add ValidateNotNullOrEmpty too many existing parameters.

RegisterkartenvervollständigungTab completion

  • Der Typrückschluss bei der Vervollständigung mit der TAB-TASTE wurde basierend auf den Variablenwerten der Common Language Runtime verbessert.Enhanced the type inference in tab completion based on runtime variable values. (#2744) (Vielen Dank an @powercode) Dadurch funktioniert die Vervollständigung mit der TAB-TASTE z.B. in folgendem Fall:(#2744) (Thanks to @powercode!) This enables tab completion in situations like:

    $p = Get-Process
    $p | Foreach-Object Prio<tab>
    
  • Die Hashtabellen-Vervollständigung mit der TAB-TASTE wurde bei -Property von Select-Object hinzugefügt.Add Hashtable tab completion for -Property of Select-Object. (#3625) (Vielen Dank an @powercode)(#3625) (Thanks to @powercode)

  • Die automatische Argumentvervollständigung wurde für -ExcludeProperty und -ExpandProperty von Select-Object hinzugefügt.Enable argument auto-completion for -ExcludeProperty and -ExpandProperty of Select-Object. (#3443) (Vielen Dank an @iSazonov)(#3443) (Thanks to @iSazonov!)

  • native.exe --<tab> ruft bei der Vervollständigung mit der TAB-TASTE den nativen Vervollständiger auf.Fix a bug in tab completion to make native.exe --<tab> call into native completer. (#3633) (Vielen Dank an @powercode)(#3633) (Thanks to @powercode!)

Wichtige ÄnderungenBreaking changes

Wir haben einige wichtige Änderungen in PowerShell Core 6.0 eingeführt.We've introduced a number of breaking changes in PowerShell Core 6.0. Weitere Informationen finden Sie unter Breaking Changes for PowerShell 6.0 (Wichtige Änderungen in PowerShell 6.0).To read more about them in detail, see Breaking Changes in PowerShell Core 6.0.

DebuggenDebugging

  • Unterstützung für die Möglichkeit, das Remotedebuggen von Invoke-Command -ComputerName schrittweise zu durchlaufen.Support for remote step-in debugging for Invoke-Command -ComputerName. (#3015)(#3015)
  • Die Binderdebugprotokollierung wurde in PowerShell Core aktiviert.Enable binder debug logging in PowerShell Core

DateisystemupdatesFilesystem updates

  • Der Dateisystemanbieter kann jetzt über einen UNC-Pfad verwendet werden.Enable usage of the Filesystem provider from a UNC path. ($4998)($4998)
  • Split-Path funktioniert nun mit UNC-Stämmen.Split-Path now works with UNC roots
  • cd ohne Argumente verhält sich nun wie cd ~.cd with no arguments now behaves as cd ~
  • In PowerShell Core dürfen nun Pfade mit mehr als 260 Zeichen verwendet werden.Fixed PowerShell Core to allow use of paths that are more than 260 characters long. (#3960)(#3960)

Fehlerbehebungen und LeistungsverbesserungenBug fixes and performance improvements

Wir haben viele Leistungsverbesserungen in PowerShell vorgenommen, z.B. bei der Startzeit, bei verschiedenen integrierten Cmdlets sowie bei der Interaktion mit nativen Binärdateien.We've made many improvements to performance across PowerShell, including in startup time, various built-in cmdlets, and interaction with native binaries.

Außerdem wurden einige Fehler in PowerShell Core behoben.We've also fixed a number of bugs within PowerShell Core. Eine vollständige Liste der Korrekturen und Änderungen finden Sie unter Changelog (Änderungsprotokoll) auf GitHub.For a complete list of fixes and changes, check out our changelog on GitHub.

TelemetrieTelemetry

  • In PowerShell Core 6.0 wurde dem Konsolenhost Telemetrie hinzugefügt, um zwei Werte zu melden (#3620):PowerShell Core 6.0 added telemetry to the console host to report two values (#3620):
    • die Betriebssystemplattform ($PSVersionTable.OSDescription)the OS platform ($PSVersionTable.OSDescription)
    • die genaue PowerShell-Version ($PSVersionTable.GitCommitId)the exact version of PowerShell ($PSVersionTable.GitCommitId)

Wenn Sie diese Telemetrie deaktivieren möchten, erstellen Sie einfach die Umgebungsvariable POWERSHELL_TELEMETRY_OPTOUT mit einem der folgenden Werte: true, 1 oder yes.If you want to opt-out of this telemetry, simply create POWERSHELL_TELEMETRY_OPTOUT environment variable with one of the following values: true, 1 or yes. Durch das Erstellen der Variable wird das Senden von Telemetriedaten bereits vor der ersten Ausführung von PowerShell umgangen.Creating the variable bypasses all telemetry even before the first run of PowerShell. Diese Telemetriedaten und die Erkenntnisse, die wir daraus ziehen, sollen auf dem Community-Dashboard veröffentlicht werden.We also plan on exposing this telemetry data and the insights we glean from the telemetry in the community dashboard. Weitere Informationen dazu, wie wir diese Daten verwenden, finden Sie in diesem Blogbeitrag.You can find out more about how we use this data in this blog post.