Wat is er nieuw in PowerShell-kern 6.0What's New in PowerShell Core 6.0

PowerShell Core 6.0 is een nieuwe versie van PowerShell die cross-platform (Windows, Mac OS en Linux), open source en gebouwd voor heterogene omgevingen en de hybride cloud.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.

.NET Framework is verplaatst naar .NET CoreMoved from .NET Framework to .NET Core

Maakt gebruik van PowerShell Core .NET Core 2.0 als de runtime.PowerShell Core uses .NET Core 2.0 as its runtime. .NET core 2.0 kunt PowerShell Core werken op meerdere platforms (Windows, Mac OS en Linux)..NET Core 2.0 enables PowerShell Core to work on multiple platforms (Windows, macOS, and Linux). PowerShell Core wordt ook de API-set die worden aangeboden door .NET Core 2.0 moet worden gebruikt in de PowerShell-cmdlets en -scripts.PowerShell Core also exposes the API set offered by .NET Core 2.0 to be used in PowerShell cmdlets and scripts.

Windows PowerShell gebruikt de .NET Framework runtime voor het hosten van de PowerShell-engine.Windows PowerShell used the .NET Framework runtime to host the PowerShell engine. Dit betekent dat Windows PowerShell de API-set die worden aangeboden door .NET Framework beschrijft.This means that Windows PowerShell exposes the API set offered by .NET Framework.

De API's gedeeld tussen .NET Core en .NET Framework zijn gedefinieerd als onderdeel van .NET Standard.The APIs shared between .NET Core and .NET Framework are defined as part of .NET Standard.

Zie voor meer informatie over hoe dit van invloed op module-script compatibiliteit tussen PowerShell Core en Windows PowerShell, Backwards compatibiliteit met Windows PowerShell.For more information on how this affects module/script compatibility between PowerShell Core and Windows PowerShell, see Backwards compatibility with Windows PowerShell.

Ondersteuning voor Mac OS- en LinuxSupport for macOS and Linux

PowerShell officieel ondersteunt nu Mac OS- en Linux, met inbegrip van:PowerShell now officially supports macOS and Linux, including:

  • Windows 7, 8.1 en 10Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016Windows Server 2008 R2, 2012 R2, 2016
  • Windows-serverkanaal puntkomma per jaarWindows Server Semi-Annual Channel
  • Ubuntu 14.04 16.04 en 17.04Ubuntu 14.04, 16.04, and 17.04
  • Debian 8,7 + en 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+macOS 10.12+

Onze community heeft ook bijgedragen pakketten voor de volgende platforms, maar ze zijn niet officieel ondersteund:Our community has also contributed packages for the following platforms, but they are not officially supported:

  • Boog LinuxArch Linux
  • Kali LinuxKali Linux
  • AppImage (werkt op meerdere platforms voor Linux)AppImage (works on multiple Linux platforms)

Ook hebben we experimentele (niet-ondersteunde) versies voor de volgende platforms:We also have experimental (unsupported) releases for the following platforms:

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

Een aantal wijzigingen zijn aangebracht in PowerShell Core 6.0 zodat deze beter werkt op niet-Windows-systemen.A number of changes were made to in PowerShell Core 6.0 to make it work better on non-Windows systems. Sommige van deze zijn wijzigingen, die ook van invloed op Windows splitsen.Some of these are breaking changes, which also affect Windows. Andere zijn alleen aanwezig of is van toepassing in niet-Windows-installaties van PowerShell Core.Others are only present or applicable in non-Windows installations of PowerShell Core.

  • Ondersteuning toegevoegd voor systeemeigen opdracht bij globbing op Unix-platforms.Added support for native command globbing on Unix platforms.
  • De more functionaliteit respecteert de Linux $PAGER en wordt standaard ingesteld op less.The more functionality respects the Linux $PAGER and defaults to less. Dit betekent dat u kunt nu met gebruik van jokertekens systeemeigen binaire bestanden/opdrachten (bijvoorbeeld ls *.txt).This means you can now use wildcards with native binaries/commands (for example, ls *.txt). (#3463)(#3463)
  • Afsluitende backslash is automatisch ontsnapt systeemeigen opdrachtargumenten betreft.Trailing backslash is automatically escaped when dealing with native command arguments. (#4965)(#4965)
  • Negeer de -ExecutionPolicy overschakelen wanneer PowerShell op niet-Windows-platforms worden uitgevoerd omdat de ondertekening van het script wordt momenteel niet ondersteund.Ignore the -ExecutionPolicy switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (#3481)(#3481)
  • Vaste ConsoleHost inwilligen NoEcho op Unix-platforms.Fixed ConsoleHost to honor NoEcho on Unix platforms. (#3801)(#3801)
  • Vaste Get-Help ter ondersteuning van hoofdlettergevoelig patroon overeen op de Unix-platforms.Fixed Get-Help to support case insensitive pattern matching on Unix platforms. (#3852)(#3852)
  • powershellMan-pagina toegevoegd aan het pakketpowershell man-page added to package

LogboekregistratieLogging

Op Mac OS, PowerShell wordt het native os_log API's om Apple unified logboekregistratie system.On macOS, PowerShell uses the native os_log APIs to log to Apple's unified logging system. Op Linux, PowerShell wordt Syslog, een oplossing alomtegenwoordige logboekregistratie.On Linux, PowerShell uses Syslog, a ubiquitous logging solution.

BestandssysteemFilesystem

Een aantal wijzigingen zijn aangebracht op Mac OS- en Linux ter ondersteuning van oudsher niet ondersteund op Windows tekens:A number of changes have been made on macOS and Linux to support filename characters not traditionally supported on Windows:

  • Paden die tot de cmdlets zijn nu slash-networkdirect (zowel / en \ werk directory scheiding)Paths given to cmdlets are now slash-agnostic (both / and \ work as directory separator)
  • XDG Base Directory specificatie is nu in acht genomen en standaard gebruikt:XDG Base Directory Specification is now respected and used by default:
    • Het pad van het Linux/Mac OS-profiel bevindt zich op~/.config/powershell/profile.ps1The Linux/macOS profile path is located at ~/.config/powershell/profile.ps1
    • De geschiedenis pad op te slaan bevindt zich op~/.local/share/powershell/PSReadline/ConsoleHost_history.txtThe history save path is located at ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
    • Het pad van de gebruiker-module bevindt zich op~/.local/share/powershell/ModulesThe user module path is located at ~/.local/share/powershell/Modules
  • Ondersteuning voor bestands- en mapnamen met de dubbele punt op Unix.Support for file and folder names containing the colon character on Unix. (#4959)(#4959)
  • Ondersteuning voor scriptnamen- of volledige paden met komma's.Support for script names or full paths that have commas. (#4136) (Dank aan @TimCurwick!)(#4136) (Thanks to @TimCurwick!)
  • Detecteren wanneer -LiteralPath wordt gebruikt voor het onderdrukken van jokertekens voor navigatie-cmdlets.Detect when -LiteralPath is used to suppress wildcard expansion for navigation cmdlets. (#5038)(#5038)
  • Bijgewerkt Get-ChildItem meer achtige werkt de * nix ls -R en de Windows DIR /S systeemeigen opdrachten.Updated Get-ChildItem to work more like the *nix ls -R and the Windows DIR /S native commands. Get-ChildItemnu retourneert de symbolische koppelingen aangetroffen tijdens een recursieve zoekopdracht en niet in de mappen die het doel van deze koppelingen.Get-ChildItem now returns the symbolic links encountered during a recursive search and does not search the directories that those links target. (#3780)(#3780)

HoofdlettergevoeligheidCase sensitivity

Linux- en Mac OS zijn meestal hoofdlettergevoelig terwijl Windows behoud van de aanvraag niet hoofdlettergevoelig is.Linux and macOS tend to be case-sensitive while Windows is case-insensitive while preserving case. In het algemeen is PowerShell niet hoofdlettergevoelig.In general, PowerShell is case insensitive.

Omgevingsvariabelen zijn bijvoorbeeld hoofdlettergevoelig op Mac OS- en Linux, dus het hoofdlettergebruik van de PSModulePath omgevingsvariabele is gestandaardiseerd.For example, environment variables are case-sensitive on macOS and Linux, so the casing of the PSModulePath environment variable has been standardized. (#3255) Import-Module is niet hoofdlettergevoelig bij het gebruik van een bestandspad om te bepalen van de naam van de module.(#3255) Import-Module is case insensitive when it's using a file path to determine the module's name. (#5097)(#5097)

Ondersteuning voor side-by-side-installatiesSupport for side-by-side installations

PowerShell Core is geïnstalleerd, geconfigureerd en afzonderlijk verwerkt vanuit de Windows PowerShell.PowerShell Core is installed, configured, and executed separately from Windows PowerShell. PowerShell Core is een 'draagbare' ZIP-pakket.PowerShell Core has a "portable" ZIP package. Het ZIP-pakket gebruikt, kunt u installeren een willekeurig aantal versies overal op schijf, met inbegrip van een lokale bron naar een toepassing die nodig is PowerShell als een afhankelijkheid.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. Side-by-side installation vergemakkelijkt het testen van nieuwe versies van PowerShell en migreren van bestaande scripts gedurende een bepaalde periode.Side-by-side installation makes it easier to test new versions of PowerShell and migrating existing scripts over time. Naast elkaar kan ook achterwaartse compatibiliteit zoals scripts kunnen worden gekoppeld aan specifieke versies die ze nodig hebben.Side-by-side also enables backwards compatibility as scripts can be pinned to specific versions that they require.

Notitie

Het installatieprogramma (MSI) gebaseerde in Windows biedt standaard een in-place update-installatie.By default, the MSI-based installer on Windows does an in-place update install.

Hernoemd powershell(.exe) naarpwsh(.exe)Renamed powershell(.exe) to pwsh(.exe)

De binaire naam voor de belangrijkste PowerShell is gewijzigd van powershell(.exe) naar pwsh(.exe).The binary name for PowerShell Core has been changed from powershell(.exe) to pwsh(.exe). Deze wijziging biedt een deterministische manier voor gebruikers PowerShell Core uitvoeren op machines ter ondersteuning van side-by-side Windows PowerShell en PowerShell Core-installaties.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. pwshis het ook veel korter en beter typt.pwsh is also much shorter and easier to type.

Aanvullende wijzigingen aan pwsh(.exe) van powershell.exe:Additional changes to pwsh(.exe) from powershell.exe:

  • De eerste positionele parameter van gewijzigd -Command naar -File.Changed the first positional parameter from -Command to -File. Deze wijziging kunt u het gebruik van #! (ook bekend als een shebang) in de PowerShell-scripts die worden uitgevoerd van de niet-PowerShell schalen op niet-Windows-platforms.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. Het betekent ook dat u opdrachten zoals kunt uitvoeren pwsh foo.ps1 of pwsh fooScript zonder op te geven -File.It also means that you can run commands like pwsh foo.ps1 or pwsh fooScript without specifying -File. Deze wijziging vereist echter dat u expliciet opgeeft -c of -Command tijdens het uitvoeren van opdrachten zoals pwsh.exe -Command Get-Command.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 accepteert de -i (of -Interactive) switch om aan te geven van een interactieve shell.PowerShell Core accepts the -i (or -Interactive) switch to indicate an interactive shell. (#3558) Hiermee kunt PowerShell om te worden gebruikt als een standaardshell voor op Unix-platforms.(#3558) This allows PowerShell to be used as a default shell on Unix platforms.
  • Parameters verwijderd -importsystemmodules en -psconsoleFile van pwsh.exe.Removed parameters -importsystemmodules and -psconsoleFile from pwsh.exe. (#4995)(#4995)
  • Gewijzigd pwsh -version en ingebouwde help voor pwsh.exe uitgelijnd met andere systeemeigen hulpprogramma's.Changed pwsh -version and built-in help for pwsh.exe to align with other native tools. (#4958 & #4931) (Met vriendelijke groet @iSazonov)(#4958 & #4931) (Thanks @iSazonov)
  • Ongeldig argument foutberichten voor -File en -Command en afsluitcodes consistent zijn met Unix-standaarden (#4573)Invalid argument error messages for -File and -Command and exit codes consistent with Unix standards (#4573)
  • Toegevoegd -WindowStyle parameter in Windows.Added -WindowStyle parameter on Windows. (#4573) Installaties op basis van pakket-updates op niet-Windows-platforms zijn op dezelfde manier in-place updates.(#4573) Similarly, package-based installations updates on non-Windows platforms are in-place updates.

Achterwaartse compatibiliteit met Windows PowerShellBackwards compatibility with Windows PowerShell

Het doel van PowerShell Core is om te blijven als compatibel mogelijk met Windows PowerShell.The goal of PowerShell Core is to remain as compatible as possible with Windows PowerShell. Maakt gebruik van PowerShell Core .NET Standard 2.0 voor binaire compatibiliteit met bestaande .NET-assembly's.PowerShell Core uses .NET Standard 2.0 to provide binary compatibility with existing .NET assemblies. Veel PowerShell-modules, is afhankelijk van deze assembly's (vaak tijden dll-bestanden), zodat de standaard .NET kunnen ze blijven werken met .NET Core.Many PowerShell modules depend on these assemblies (often times DLLs), so .NET Standard allows them to continue working with .NET Core. PowerShell Core bevat ook een heuristiek in bekende mappen--toe, zoals waar de Global Assembly Cache bevindt zich doorgaans op schijf--om te zoeken naar afhankelijkheden van .NET Framework-dll-bestand te zoeken.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.

Voor meer informatie over .NET standaard op de .NET-Blog, in dit YouTube video en via dit Veelgestelde vragen over op GitHub.You can learn more about .NET Standard on the [.NET Blog][], in this YouTube video, and via this [FAQ][] on GitHub.

Best mogelijke is gedaan om ervoor te zorgen dat de PowerShell-modules voor taal en 'ingebouwde' (zoals Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility, enzovoort) werken op dezelfde manier als 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 veel gevallen met behulp van de community toegevoegd nieuwe functies en foutoplossingen voor die cmdlets.In many cases, with the help of the community, we've added new capabilities and bug fixes to those cmdlets. In sommige gevallen kan vanwege een ontbrekende afhankelijkheid in onderliggende .NET lagen functionaliteit is verwijderd of is niet beschikbaar.In some cases, due to a missing dependency in underlying .NET layers, functionality was removed or is unavailable.

De meeste van de modules die worden geleverd als onderdeel van Windows (bijvoorbeeld DnsClient, Hyper-V, NetTCPIP, Storage, enzovoort) en andere Microsoft-producten met inbegrip van Azure en Office zijn niet expliciet overgezet naar. Nog NET Core.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. Het PowerShell-team werkt samen met deze productfamilies en teams om te valideren en poort van hun bestaande modules naar PowerShell-kern.The PowerShell team is working with these product groups and teams to validate and port their existing modules to PowerShell Core. Met .NET Standard en CDXMLveel van deze traditionele Windows PowerShell-modules lijken te werken in PowerShell Core, maar ze niet formeel zijn gevalideerd en worden ze niet officieel ondersteund.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.

Door het installeren van de WindowsPSModulePath -module, kunt u Windows PowerShell-modules gebruiken door de Windows PowerShell toe te voegen PSModulePath naar uw PowerShell-kern PSModulePath.By installing the WindowsPSModulePath module, you can use Windows PowerShell modules by appending the Windows PowerShell PSModulePath to your PowerShell Core PSModulePath.

Installeer eerst de WindowsPSModulePath module op basis van de PowerShell-galerie:First, install the WindowsPSModulePath module from the PowerShell Gallery:

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

Voer na het installeren van deze module de Add-WindowsPSModulePath cmdlet om toe te voegen van de Windows PowerShell PSModulePath naar PowerShell-kern: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-ondersteuningDocker support

PowerShell Core voegt ondersteuning toe voor Docker-containers voor de primaire platforms die wordt ondersteund (met inbegrip van meerdere Linux-distributies, Windows Server Core en 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).

Voor een volledige lijst, bekijk de labels op microsoft/powershell op Docker Hub.For a complete list, check out the tags on microsoft/powershell on Docker Hub. Zie voor meer informatie over Docker en PowerShell Core Docker op GitHub.For more information on Docker and PowerShell Core, see Docker on GitHub.

SSH op basis van PowerShell voor externe toegangSSH-based PowerShell Remoting

De PowerShell Remoting Protocol (PSRP) werkt nu met het protocol Secure Shell (SSH) naast de traditionele PSRP op basis van WinRM.The PowerShell Remoting Protocol (PSRP) now works with the Secure Shell (SSH) protocol in addition to the traditional WinRM-based PSRP.

Dit betekent dat u cmdlets, zoals kunt Enter-PSSession en New-PSSession en verifiëren met behulp van SSH.This means that you can use cmdlets like Enter-PSSession and New-PSSession and authenticate using SSH. Hoeft u PowerShell registreren als een subsysteem met een OpenSSH op basis van een SSH-server is en u kunt uw bestaande SSH gebaseerde verificatie mechanismen (zoals wachtwoorden of persoonlijke sleutels) met de traditionele PSSession semantiek.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.

Zie voor meer informatie over het configureren en gebruiken van externe toegang op basis van SSH PowerShell voor externe toegang via SSH.For more information on configuring and using SSH-based remoting, see PowerShell Remoting over SSH.

Standaardcodering is UTF-8 zonder een stuklijstDefault encoding is UTF-8 without a BOM

In het verleden Windows PowerShell-cmdlets, zoals Get-Content, Set-Content verschillende coderingen, zoals ASCII- en UTF-16 wordt gebruikt.In the past, Windows PowerShell cmdlets like Get-Content, Set-Content used different encodings, such as ASCII and UTF-16. De verschillen in de Aanvraagcodering gemaakt problemen wanneer de combinatie van cmdlets zonder op te geven een codering.The variance in encoding defaults created problems when mixing cmdlets without specifying an encoding.

Zonder een Byte Order Mark (BOM) UTF-8 niet-Windows-platforms oudsher gebruiken als de standaardversleuteling voor tekstbestanden.Non-Windows platforms traditionally use UTF-8 without a Byte Order Mark (BOM) as the default encoding for text files. Meer Windows-toepassingen en hulpprogramma's zijn bewegende weg UTF-16 en naar BOM minder UTF-8-codering.More Windows applications and tools are moving away from UTF-16 and towards BOM-less UTF-8 encoding. PowerShell Core verandert de standaardversleuteling die voldoen aan de breder ecosystemen.PowerShell Core changes the default encoding to conform with the broader ecosystems.

Dit betekent dat alle ingebouwde cmdlets die gebruikmaken van de -Encoding parameter gebruik de UTF8NoBOM waarde standaard.This means that all built-in cmdlets that use the -Encoding parameter use the UTF8NoBOM value by default. De volgende cmdlets worden beïnvloed door deze wijziging:The following cmdlets are affected by this change:

  • Add-ContentAdd-Content
  • Export ClixmlExport-Clixml
  • Export-CsvExport-Csv
  • Export-PSSessionExport-PSSession
  • Indeling HexFormat-Hex
  • Get-ContentGet-Content
  • Import-CsvImport-Csv
  • New-ModuleManifestNew-ModuleManifest
  • Out-FileOut-File
  • Selecteer-tekenreeksSelect-String
  • Send-MailMessageSend-MailMessage
  • Set-ContentSet-Content

Deze cmdlets ook zijn bijgewerkt zodat de -Encoding -parameter accepteert universeel System.Text.Encoding.These cmdlets have also been updated so that the -Encoding parameter universally accepts System.Text.Encoding.

De standaardwaarde van $OutputEncoding ook is gewijzigd in UTF-8.The default value of $OutputEncoding has also been changed to UTF-8.

Als een best practice moet u expliciet coderingen instellen in scripts met de -Encoding parameter voor het produceren van deterministische gedrag in verschillende platforms.As a best practice, you should explicitly set encodings in scripts using the -Encoding parameter to produce deterministic behavior across platforms.

Ondersteuning voor backgrounding van pijplijnen met en-teken (&) (#3360)Support backgrounding of pipelines with ampersand (&) (#3360)

Plaatsen & aan het einde van een pijplijn zorgt ervoor dat de pijplijn worden uitgevoerd als een PowerShell-taak.Putting & at the end of a pipeline causes the pipeline to be run as a PowerShell job. Wanneer u een pijplijn is backgrounded, wordt een taakobject geretourneerd.When a pipeline is backgrounded, a job object is returned. Zodra de pijplijn wordt uitgevoerd als een taak, alle van de standaard *-Job cmdlets kunnen worden gebruikt voor het beheren van de taak.Once the pipeline is running as a job, all of the standard *-Job cmdlets can be used to manage the job. Variabelen (proces-specifieke variabelen op) gebruikt in de pijplijn worden automatisch gekopieerd naar de taak dus Copy-Item $foo $bar & gewoon werkt.Variables (ignoring process-specific variables) used in the pipeline are automatically copied to the job so Copy-Item $foo $bar & just works. De taak wordt ook uitgevoerd in de huidige map in plaats van de basismap van de gebruiker.The job is also run in the current directory instead of the user's home directory. Zie voor meer informatie over PowerShell taken about_Jobs.For more information about PowerShell jobs, see about_Jobs.

Semantische versiebeheerSemantic versioning

  • Aangebracht SemanticVersion compatibel is met SemVer 2.0.Made SemanticVersion compatible with SemVer 2.0. (#5037) (Met vriendelijke groet @iSazonov!)(#5037) (Thanks @iSazonov!)
  • Standaard gewijzigd ModuleVersion in New-ModuleManifest naar 0.0.1 uitgelijnd met SemVer.Changed default ModuleVersion in New-ModuleManifest to 0.0.1 to align with SemVer. (#4842) (Met vriendelijke groet @LDSpits)(#4842) (Thanks @LDSpits)
  • Toegevoegd semver als een type accelerator voor System.Management.Automation.SemanticVersion.Added semver as a type accelerator for System.Management.Automation.SemanticVersion. (#4142) (Dank aan @oising!)(#4142) (Thanks to @oising!)
  • Vergelijking tussen ingeschakeld een SemanticVersion exemplaar en een Version exemplaar dat is opgesteld alleen met Major en Minor Versiewaarden.Enabled comparison between a SemanticVersion instance and a Version instance that is constructed only with Major and Minor version values.

TaalupdatesLanguage updates

  • Unicode-escape parseren zodat gebruikers Unicode-tekens als argumenten, tekenreeksen of namen van variabelen gebruiken kunnen worden geïmplementeerd.Implement Unicode escape parsing so that users can use Unicode characters as arguments, strings, or variable names. (#3958) (Dank aan @rkeithhill!)(#3958) (Thanks to @rkeithhill!)
  • Toegevoegde nieuwe escape-teken voor ESC:`eAdded new escape character for ESC: `e
  • Ondersteuning toegevoegd voor het converteren van enum-waarden voor de tekenreeks (#4318) (met vriendelijke groet @KirkMunro)Added support for converting enums to string (#4318) (Thanks @KirkMunro)
  • Vaste casten één element matrix aan een algemene verzameling.Fixed casting single element array to a generic collection. (#3170)(#3170)
  • Toegevoegde teken bereik overbelasting aan de .. operator, dus 'a'..'z' tekens retourneert tussen "a" en "z".Added character range overload to the .. operator, so 'a'..'z' returns characters from 'a' to 'z'. (#5026) (Met vriendelijke groet @IISResetMe!)(#5026) (Thanks @IISResetMe!)
  • Toewijzing van vaste variabele alleen-lezen-variabelen niet overschrijvenFixed variable assignment to not overwrite read-only variables
  • Push-locals van automatische variabelen naar 'DottedScopes' wanneer dotting script cmdlets (#4709)Push locals of automatic variables to 'DottedScopes' when dotting script cmdlets (#4709)
  • Gebruik van 'Singleline, Multiline' optie in splitsingsoperator inschakelen (#4721) (met vriendelijke groet @iSazonov)Enable use of 'Singleline, Multiline' option in split operator (#4721) (Thanks @iSazonov)

Engine-updatesEngine updates

  • $PSVersionTableheeft vier nieuwe eigenschappen:$PSVersionTable has four new properties:
    • PSEdition: Dit is ingesteld op Core op PowerShell Core en Desktop op Windows PowerShellPSEdition: This is set to Core on PowerShell Core and Desktop on Windows PowerShell
    • GitCommitId: Dit is de Git commit-ID van de Git-vertakking of code waarbij PowerShell is opgebouwd.GitCommitId: This is the Git commit ID of the Git branch or tag where PowerShell was built. Uitgebrachte builds voor waarschijnlijk moeten hetzelfde zijn als PSVersion.On released builds, it will likely be the same as PSVersion.
    • OS: Dit is een OS-versie-tekenreeks geretourneerd door[System.Runtime.InteropServices.RuntimeInformation]::OSDescriptionOS: This is an OS version string returned by [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
    • Platform: Dit wordt geretourneerd door [System.Environment]::OSVersion.Platform is ingesteld op Win32NT op Windows, MacOSX op Mac OS, en Unix op Linux.Platform: This is returned by [System.Environment]::OSVersion.Platform It is set to Win32NT on Windows, MacOSX on macOS, and Unix on Linux.
  • Verwijderd de BuildVersion eigenschap uit $PSVersionTable.Removed the BuildVersion property from $PSVersionTable. Deze eigenschap is sterk gekoppeld aan de build-versie van Windows.This property was strongly tied to the Windows build version. In plaats daarvan het is raadzaam dat u GitCommitId voor het ophalen van de exacte build-versie van PowerShell Core.Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core. (#3877) (Dank aan @iSazonov!)(#3877) (Thanks to @iSazonov!)
  • Verwijder ClrVersion eigenschap uit $PSVersionTable.Remove ClrVersion property from $PSVersionTable. Deze eigenschap is niet relevant voor .NET Core en is alleen voor specifieke verouderde doeleinden die niet van toepassing op PowerShell zijn in .NET Core behouden blijven.This property is irrelevant for .NET Core, and was only preserved in .NET Core for specific legacy purposes that are inapplicable to PowerShell.
  • Drie nieuwe automatische variabelen om te bepalen of PowerShell wordt uitgevoerd in een bepaald besturingssysteem toegevoegd: $IsWindows, $IsMacOs, en $IsLinux.Added three new automatic variables to determine whether PowerShell is running in a given OS: $IsWindows, $IsMacOs, and $IsLinux.
  • Voeg GitCommitId naar PowerShell Core banner.Add GitCommitId to PowerShell Core banner. Nu u hoeft te worden uitgevoerd $PSVersionTable zodra u PowerShell als u de versie begint!Now you don't have to run $PSVersionTable as soon as you start PowerShell to get the version! (#3916) (Dank aan @iSazonov!)(#3916) (Thanks to @iSazonov!)
  • Toevoegen van een JSON-configuratiebestand aangeroepen powershell.config.json in $PSHome voor het opslaan van enkele instellingen die vereist zijn voor opstarten (bijvoorbeeld ExecutionPolicy).Add a JSON config file called powershell.config.json in $PSHome to store some settings required before startup time (e.g. ExecutionPolicy).
  • Pijplijn niet blokkeren wanneer Windows-EXE wordt uitgevoerdDon't block pipeline when running Windows EXE's
  • De inventarisatie van COM-verzamelingen is ingeschakeld.Enabled enumeration of COM collections. (#4553)(#4553)

Updates van de cmdletCmdlet updates

Nieuwe cmdletsNew cmdlets

  • Voeg Get-Uptime naar Microsoft.PowerShell.Utility.Add Get-Uptime to Microsoft.PowerShell.Utility.
  • Voeg Remove-Alias opdracht.Add Remove-Alias Command. (#5143) (Met vriendelijke groet @PowershellNinja!)(#5143) (Thanks @PowershellNinja!)
  • Voeg Remove-Service aan Management-module.Add Remove-Service to Management module. (#4858) (Met vriendelijke groet @joandrsn!)(#4858) (Thanks @joandrsn!)

Web-cmdletsWeb cmdlets

  • Certificaat verificatie ondersteuning toevoegen voor web-cmdlets.Add certificate authentication support for web cmdlets. (#4646) (Met vriendelijke groet @markekraus)(#4646) (Thanks @markekraus)
  • Ondersteuning voor inhoud headers toevoegen aan de web-cmdlets.Add support for content headers to web cmdlets. (#4494 & #4640) (Met vriendelijke groet @markekraus)(#4494 & #4640) (Thanks @markekraus)
  • Ondersteuning voor meerdere koppeling header toevoegen aan Web-Cmdlets.Add multiple link header support to Web Cmdlets. (#5265) (Met vriendelijke groet @markekraus!)(#5265) (Thanks @markekraus!)
  • Ondersteuning voor koppeling header paginering in web-cmdlets (#3828)Support Link header pagination in web cmdlets (#3828)
    • Voor Invoke-WebRequest, wanneer het antwoord bevat de header van een koppeling maken we een eigenschap RelationLink als een woordenlijst die vertegenwoordigt de URL's en rel kenmerken en zorg ervoor dat de URL's zijn absolute eenvoudiger voor ontwikkelaars om te gebruiken.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.
    • Voor Invoke-RestMethod, wanneer het antwoord bevat een koppeling koptekst we geven een -FollowRelLink switch automatisch volgen next rel koppelingen totdat ze niet langer bestaat of één keer wordt bereikt het optionele -MaximumFollowRelLink parameterwaarde.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.
  • Voeg -CustomMethod -parameter voor web-cmdlets om toe te staan voor niet-standaard methode termen.Add -CustomMethod parameter to web cmdlets to allow for non-standard method verbs. (#3142) (Dank aan @Lee303!)(#3142) (Thanks to @Lee303!)
  • Voeg SslProtocol ondersteuning voor Web-Cmdlets.Add SslProtocol support to Web Cmdlets. (#5329) (Met vriendelijke groet @markekraus!)(#5329) (Thanks @markekraus!)
  • Toevoegen van Multipart ondersteuning voor web-cmdlets.Add Multipart support to web cmdlets. (#4782) (Met vriendelijke groet @markekraus)(#4782) (Thanks @markekraus)
  • Voeg -NoProxy naar web cmdlets zodat ze het hele systeem proxy-instelling negeren.Add -NoProxy to web cmdlets so that they ignore the system-wide proxy setting. (#3447) (Dank aan @TheFlyingCorpse!)(#3447) (Thanks to @TheFlyingCorpse!)
  • Gebruiker-Agent van de Web-Cmdlets rapporteert nu het besturingssysteem of platform (#4937) (met vriendelijke groet @LDSpits)User Agent of Web Cmdlets now reports the OS platform (#4937) (Thanks @LDSpits)
  • Voeg -SkipHeaderValidation overschakelen naar de web-cmdlets voor de ondersteuning van headers toe te voegen zonder het valideren van de headerwaarde.Add -SkipHeaderValidation switch to web cmdlets to support adding headers without validating the header value. (#4085)(#4085)
  • Web-cmdlets voor het HTTPS-certificaat van de server niet valideren als vereist inschakelen.Enable web cmdlets to not validate the HTTPS certificate of the server if required.
  • Parameters voor verificatie toevoegen aan web-cmdlets.Add authentication parameters to web cmdlets. (#5052) (Met vriendelijke groet @markekraus)(#5052) (Thanks @markekraus)
    • Voeg -Authentication biedt drie opties: Basic, OAuth en Bearer.Add -Authentication that provides three options: Basic, OAuth, and Bearer.
    • Voeg -Token de bearer-token ophalen voor OAuth en Bearer-opties.Add -Token to get the bearer token for OAuth and Bearer options.
    • Voeg -AllowUnencryptedAuthentication authentication dat is opgegeven voor een transportschema dan HTTPS overslaan.Add -AllowUnencryptedAuthentication to bypass authentication that is provided for any transport scheme other than HTTPS.
  • Voeg -ResponseHeadersVariable naar Invoke-RestMethod waarmee het vastleggen van antwoordheaders.Add -ResponseHeadersVariable to Invoke-RestMethod to enable the capture of response headers. (#4888) (Met vriendelijke groet @markekraus)(#4888) (Thanks @markekraus)
  • Los de web-cmdlets voor het HTTP-antwoord opnemen in de uitzondering wanneer de code voor antwoordstatus niet geslaagd is.Fix web cmdlets to include the HTTP response in the exception when the response status code is not success. (#3201)(#3201)
  • Web-cmdlets wijzigen UserAgent van WindowsPowerShell naar PowerShell.Change web cmdlets UserAgent from WindowsPowerShell to PowerShell. (#4914) (Met vriendelijke groet @markekraus)(#4914) (Thanks @markekraus)
  • Voeg expliciete ContentType detectie om Invoke-RestMethod (#4692)Add explicit ContentType detection to Invoke-RestMethod (#4692)
  • Web-cmdlets los -SkipHeaderValidation werkt met niet-standaard gebruikersagent headers.Fix web cmdlets -SkipHeaderValidation to work with non-standard User-Agent headers. (#4479 & #4512) (Met vriendelijke groet @markekraus)(#4479 & #4512) (Thanks @markekraus)

JSON-cmdletsJSON cmdlets

  • Voeg -AsHashtable naar ConvertFrom-Json retourneren een Hashtable in plaats daarvan.Add -AsHashtable to ConvertFrom-Json to return a Hashtable instead. (#5043) (Met vriendelijke groet @bergmeister!)(#5043) (Thanks @bergmeister!)
  • Gebruik kleurcodes formatter met ConvertTo-Json uitvoer.Use prettier formatter with ConvertTo-Json output. (#2787) (Dank aan @kittholland!)(#2787) (Thanks to @kittholland!)
  • Voeg Jobject ondersteuning van serialisatie ConvertTo-Json.Add Jobject serialization support to ConvertTo-Json. (#5141)(#5141)
  • Los ConvertFrom-Json voor het deserialiseren van een matrix met tekenreeksen vanuit de pipeline die samen een volledige JSON-tekenreeks te maken.Fix ConvertFrom-Json to deserialize an array of strings from the pipeline that together construct a complete JSON string. Dit wordt soms waarbij nieuwe regels strijdig is met JSON parseren opgelost.This fixes some cases where newlines would break JSON parsing. (#3823)(#3823)
  • Verwijder de AliasProperty "Count" gedefinieerd voor System.Array.Remove the AliasProperty "Count" defined for System.Array. Hiermee verwijdert u de overbodige Count eigenschap voor een aantal ConvertFrom-Json uitvoer.This removes the extraneous Count property on some ConvertFrom-Json output. (#3231) (Dank aan @PetSerAl!)(#3231) (Thanks to @PetSerAl!)

CSV-cmdletsCSV cmdlets

  • Voeg PSTypeName ondersteuning voor Import-Csv en ConvertFrom-Csv.Add PSTypeName Support for Import-Csv and ConvertFrom-Csv. (#5389) (Met vriendelijke groet @markekraus!)(#5389) (Thanks @markekraus!)
  • Controleer Import-Csv ondersteunen CR, LF, en CRLF als scheidingstekens regel.Make Import-Csv support CR, LF, and CRLF as line delimiters. (#5363) (Met vriendelijke groet @iSazonov!)(#5363) (Thanks @iSazonov!)
  • Controleer -NoTypeInformation de standaardwaarde op Export-Csv en ConvertTo-Csv.Make -NoTypeInformation the default on Export-Csv and ConvertTo-Csv. (#5164) (Met vriendelijke groet @markekraus)(#5164) (Thanks @markekraus)

Service-cmdletsService cmdlets

  • Eigenschappen toevoegen UserName, Description, DelayedAutoStart, BinaryPathName, en StartupType naar de ServiceController objecten geretourneerd door Get-Service.Add properties UserName, Description, DelayedAutoStart, BinaryPathName, and StartupType to the ServiceController objects returned by Get-Service. (#4907) (Met vriendelijke groet @joandrsn)(#4907) (Thanks @joandrsn)
  • Toevoegen van functionaliteit om referenties te stellen op Set-Service opdracht.Add functionality to set credentials on Set-Service command. (#4844) (Met vriendelijke groet @joandrsn)(#4844) (Thanks @joandrsn)

Andere cmdletsOther cmdlets

  • Toevoegen van een parameter voor Get-ChildItem aangeroepen -FollowSymlink dat symlinks op aanvraag met de controles voor koppeling lussen passeert.Add a parameter to Get-ChildItem called -FollowSymlink that traverses symlinks on demand, with checks for link loops. (#4020)(#4020)
  • Update Add-Type ter ondersteuning van CSharpVersion7.Update Add-Type to support CSharpVersion7. (#3933) (Dank aan @iSazonov)(#3933) (Thanks to @iSazonov)
  • Verwijder de Microsoft.PowerShell.LocalAccounts module vanwege het gebruik van niet-ondersteunde API's tot een betere oplossing is gevonden.Remove the Microsoft.PowerShell.LocalAccounts module due to the use of unsupported APIs until a better solution is found. (#4302)(#4302)
  • Verwijder de *-Counter -cmdlets in Microsoft.PowerShell.Diagnostics vanwege het gebruik van niet-ondersteunde API's tot een betere oplossing is gevonden.Remove the *-Counter cmdlets in Microsoft.PowerShell.Diagnostics due to the use of unsupported APIs until a better solution is found. (#4303)(#4303)
  • Ondersteuning toevoegen voor Invoke-Item -Path <folder>.Add support for Invoke-Item -Path <folder>. (#4262)(#4262)
  • Voeg -Extension en -LeafBase verandert in een Split-Path zodat u paden tussen de bestandsnaamextensie en de rest van de bestandsnaam verdelen kunt.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) (Dank aan @powercode!)(#2721) (Thanks to @powercode!)
  • Voeg parameters toe -Top en -Bottom naar Sort-Object voor bovenste/onderste N sorterenAdd parameters -Top and -Bottom to Sort-Object for Top/Bottom N sort
  • Een proces bovenliggende proces weergeven door toe te voegen de CodeProperty "Parent" naar System.Diagnostics.Process.Expose a process' parent process by adding the CodeProperty "Parent" to System.Diagnostics.Process. (#2850) (Dank aan @powercode!)(#2850) (Thanks to @powercode!)
  • MB gebruiken in plaats van KB voor geheugenkolommen van hetGet-ProcessUse MB instead of KB for memory columns of Get-Process
  • Voeg -NoNewLine overschakelen voor Out-String.Add -NoNewLine switch for Out-String. (#5056) (Met vriendelijke groet @raghav710)(#5056) (Thanks @raghav710)
  • Move-Itemcmdlet respecteert -Include, -Exclude, en -Filter parameters.Move-Item cmdlet honors -Include, -Exclude, and -Filter parameters. (#3878)(#3878)
  • Toestaan dat * moet worden gebruikt in het registerpad voor Remove-Item.Allow * to be used in registry path for Remove-Item. (#4866)(#4866)
  • Voeg -Title naar Get-Credential en Combineer de ervaring van de vragen in verschillende platforms.Add -Title to Get-Credential and unify the prompt experience across platforms.
  • Voeg de -TimeOut -parameter voor Test-Connection.Add the -TimeOut parameter to Test-Connection. (#2492)(#2492)
  • Get-AuthenticodeSignaturecmdlets kunt nu handtekening bestandtijdstempel krijgen.Get-AuthenticodeSignature cmdlets can now get file signature timestamp. (#4061)(#4061)
  • Verwijder niet-ondersteunde -ShowWindow overschakelen van Get-Help.Remove unsupported -ShowWindow switch from Get-Help. (#4903)(#4903)
  • Los Get-Content -Delimiter aan het scheidingsteken niet opnemen in de matrixelementen geretourneerd (#3706) (met vriendelijke groet @mklement0)Fix Get-Content -Delimiter to not include the delimiter in the array elements returned (#3706) (Thanks @mklement0)
  • Voeg Meta, Charset, en Transitional parameters ConvertTo-HTML (#4184) (met vriendelijke groet @ergo3114)Add Meta, Charset, and Transitional parameters to ConvertTo-HTML (#4184) (Thanks @ergo3114)
  • Voeg WindowsUBR en WindowsVersion eigenschappen Get-ComputerInfo resultaatAdd WindowsUBR and WindowsVersion properties to Get-ComputerInfo result
  • Voeg -Group parameterGet-VerbAdd -Group parameter to Get-Verb
  • Voeg ShouldProcess ondersteuning voor New-FileCatalog en Test-FileCatalog (corrigeert -WhatIf en -Confirm).Add ShouldProcess support to New-FileCatalog and Test-FileCatalog (fixes -WhatIf and -Confirm). (#3074) (Dank aan @iSazonov!)(#3074) (Thanks to @iSazonov!)
  • Voeg -WhatIf overschakelen naar Start-Process cmdlet (#4735) (met vriendelijke groet @sarithsutha)Add -WhatIf switch to Start-Process cmdlet (#4735) (Thanks @sarithsutha)
  • Voeg ValidateNotNullOrEmpty te veel bestaande parameters.Add ValidateNotNullOrEmpty too many existing parameters.

Tab-aanvullingTab completion

  • De typeverwijzing in de tab-aanvulling op basis van waarden van de runtime-variabelen zijn uitgebreid.Enhanced the type inference in tab completion based on runtime variable values. (#2744) (Dank aan @powercode!) Hiermee kunt de tab-Aanvulling in dergelijke situaties:(#2744) (Thanks to @powercode!) This enables tab completion in situations like:

    $p = Get-Process
    $p | Foreach-Object Prio<tab>
    
  • Toevoegen van hash-tabel tab-aanvulling voor -Property van Select-Object.Add Hashtable tab completion for -Property of Select-Object. (#3625) (Dank aan @powercode)(#3625) (Thanks to @powercode)

  • Argument automatisch aanvullen voor inschakelen -ExcludeProperty en -ExpandProperty van Select-Object.Enable argument auto-completion for -ExcludeProperty and -ExpandProperty of Select-Object. (#3443) (Dank aan @iSazonov!)(#3443) (Thanks to @iSazonov!)
  • Los van een fout op de tab-Aanvulling aanbrengen native.exe --<tab> -aanroep in systeemeigen voltooien.Fix a bug in tab completion to make native.exe --<tab> call into native completer. (#3633) (Dank aan @powercode!)(#3633) (Thanks to @powercode!)

Wijzigingen op te splitsenBreaking changes

Er zijn een aantal grote wijzigingen in PowerShell Core 6.0 hebt geïntroduceerd.We've introduced a number of breaking changes in PowerShell Core 6.0. Voor meer informatie over deze in detail zien wijzigingen op te splitsen in PowerShell Core 6.0.To read more about them in detail, see Breaking Changes in PowerShell Core 6.0.

FoutopsporingDebugging

  • Ondersteuning voor step-in Foutopsporing op afstand voor Invoke-Command -ComputerName.Support for remote step-in debugging for Invoke-Command -ComputerName. (#3015)(#3015)
  • Binder logboekregistratie voor foutopsporing in PowerShell Core inschakelenEnable binder debug logging in PowerShell Core

Bestandssysteem updatesFilesystem updates

  • Informatie over het gebruik van de provider van het bestandssysteem van een UNC-pad inschakelen.Enable usage of the Filesystem provider from a UNC path. ($4998)($4998)
  • Split-Pathwerkt nu met UNC-toegangspuntenSplit-Path now works with UNC roots
  • cdzonder argumenten nu gedraagt zich alscd ~cd with no arguments now behaves as cd ~
  • Vaste PowerShell-kern toestaan gebruik van paden die meer dan 260 tekens lang zijn.Fixed PowerShell Core to allow use of paths that are more than 260 characters long. (#3960)(#3960)

Oplossingen voor problemen en verbeterde prestatiesBug fixes and performance improvements

We hebben aangebracht veel verbeteringen via PowerShell, zoals in het starten van de tijd, verschillende ingebouwde cmdlets en interactie met systeemeigen binaire bestanden voor de prestaties.We've made many improvements to performance across PowerShell, including in startup time, various built-in cmdlets, and interaction with native binaries.

We hebben ook een aantal fouten in PowerShell Core opgelost.We've also fixed a number of bugs within PowerShell Core. Bekijk voor een volledige lijst van wijzigingen en correcties onze changelog op GitHub.For a complete list of fixes and changes, check out our changelog on GitHub.

TelemetrieTelemetry

  • PowerShell Core 6.0 toegevoegd telemetrie naar de host van de console om te rapporteren twee waarden (#3620):PowerShell Core 6.0 added telemetry to the console host to report two values (#3620):
    • het besturingssysteem of platform ($PSVersionTable.OSDescription)the OS platform ($PSVersionTable.OSDescription)
    • de exacte versie van PowerShell ($PSVersionTable.GitCommitId)the exact version of PowerShell ($PSVersionTable.GitCommitId)

Als u opt-out van deze telemetrie wilt, verwijder $PSHome\DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY.If you want to opt-out of this telemetry, simply delete $PSHome\DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY. Verwijderen van dit bestand wordt overgeslagen alle telemetrie zelfs vóór de eerste uitvoering van PowerShell.Deleting this file bypasses all telemetry even before the first run of PowerShell. We zullen ook op het blootstellen van deze telemetriegegevens en de inzichten die we verzamelen van de telemetrie in de community dashboard.We also plan on exposing this telemetry data and the insights we glean from the telemetry in the community dashboard. U vindt meer informatie over hoe deze worden gebruikt in deze blogbericht.You can find out more about how we use this data in this blog post.