Nouveautés de PowerShell Core 6.0What's New in PowerShell Core 6.0

PowerShell Core 6.0 est une nouvelle édition de PowerShell qui est multiplateforme (Windows, macOS et Linux), open source et conçue pour des environnements hétérogènes et le cloud hybride.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.

Passage du .NET Framework à .NET CoreMoved from .NET Framework to .NET Core

PowerShell Core utilise .NET Core 2.0 comme runtime.PowerShell Core uses .NET Core 2.0 as its runtime. .NET Core 2.0 permet à PowerShell Core de fonctionner sur plusieurs plateformes (Windows, macOS et Linux)..NET Core 2.0 enables PowerShell Core to work on multiple platforms (Windows, macOS, and Linux). PowerShell Core expose également l’ensemble d’API offert par .NET Core 2.0 à utiliser dans les scripts et les applets de commande PowerShell.PowerShell Core also exposes the API set offered by .NET Core 2.0 to be used in PowerShell cmdlets and scripts.

Windows PowerShell utilisait le runtime .NET Framework pour héberger le moteur PowerShell.Windows PowerShell used the .NET Framework runtime to host the PowerShell engine. Cela signifie que Windows PowerShell expose l’ensemble d’API offert par le .NET Framework.This means that Windows PowerShell exposes the API set offered by .NET Framework.

Les API partagées entre .NET Core et le .NET Framework sont définies dans le cadre de .NET Standard.The APIs shared between .NET Core and .NET Framework are defined as part of .NET Standard.

Pour plus d’informations sur la manière dont cela affecte la compatibilité des modules/scripts entre PowerShell Core et Windows PowerShell, consultez Compatibilité descendante avec Windows PowerShell.For more information on how this affects module/script compatibility between PowerShell Core and Windows PowerShell, see Backwards compatibility with Windows PowerShell.

Prise en charge de macOS et LinuxSupport for macOS and Linux

PowerShell prend désormais officiellement en charge macOS et Linux, notamment :PowerShell now officially supports macOS and Linux, including:

  • Windows 7, 8.1 et 10Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016Windows Server 2008 R2, 2012 R2, 2016
  • Canal semi-annuel Windows ServerWindows Server Semi-Annual Channel
  • Ubuntu 14.04, 16.04 et 17.04Ubuntu 14.04, 16.04, and 17.04
  • Debian 8.7+ et 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+

Notre communauté a également proposé des packages pour les plateformes suivantes, mais ils ne sont pas officiellement pris en charge :Our community has also contributed packages for the following platforms, but they are not officially supported:

  • Arch LinuxArch Linux
  • Kali LinuxKali Linux
  • AppImage (fonctionne sur plusieurs plateformes Linux)AppImage (works on multiple Linux platforms)

Nous avons également des versions expérimentales (non prises en charge) pour les plateformes suivantes :We also have experimental (unsupported) releases for the following platforms:

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

Un certain nombre de modifications ont été apportées à PowerShell Core 6.0 pour qu’il fonctionne mieux sur les systèmes autres que Windows.A number of changes were made to in PowerShell Core 6.0 to make it work better on non-Windows systems. Certaines de ces modifications étant avec rupture, elles affectent également Windows.Some of these are breaking changes, which also affect Windows. D’autres sont uniquement présentes ou applicables dans des installations non-Windows de PowerShell Core.Others are only present or applicable in non-Windows installations of PowerShell Core.

  • Ajout de la prise en charge du globbing des commandes natives sur les plateformes Unix.Added support for native command globbing on Unix platforms.
  • La fonctionnalité more respecte l’élément $PAGER Linux et a comme valeur par défaut less.The more functionality respects the Linux $PAGER and defaults to less. Cela signifie que vous pouvez maintenant utiliser des caractères génériques avec les fichiers binaires/commandes natifs (par exemple, ls *.txt).This means you can now use wildcards with native binaries/commands (for example, ls *.txt). (#3463)(#3463)
  • La barre oblique inverse de fin est automatiquement placée dans une séquence d’échappement quand vous traitez des arguments de commande native.Trailing backslash is automatically escaped when dealing with native command arguments. (#4965)(#4965)
  • Le commutateur -ExecutionPolicy doit être ignoré lors de l’exécution de PowerShell sur les plateformes non-Windows, car la signature de script n’est actuellement pas prise en charge.Ignore the -ExecutionPolicy switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (#3481)(#3481)
  • Correction de ConsoleHost pour honorer NoEcho sur les plateformes Unix.Fixed ConsoleHost to honor NoEcho on Unix platforms. (#3801)(#3801)
  • Correction de Get-Help pour prendre en charge les critères spéciaux ne respectant par la casse sur les plateformes Unix.Fixed Get-Help to support case insensitive pattern matching on Unix platforms. (#3852)(#3852)
  • Page man powershell ajoutée au packagepowershell man-page added to package

JournalisationLogging

Sur macOS, PowerShell utilise les API os_log natives pour se connecter au système de journalisation unifiée d’Apple.On macOS, PowerShell uses the native os_log APIs to log to Apple's unified logging system. Sur Linux, PowerShell utilise Syslog, une solution de journalisation très répandue.On Linux, PowerShell uses Syslog, a ubiquitous logging solution.

FileSystemFilesystem

Un certain nombre de modifications ont été apportées à macOS et Linux pour prendre en charge les caractères de nom de fichier généralement non pris en charge sur Windows :A number of changes have been made on macOS and Linux to support filename characters not traditionally supported on Windows:

  • Les chemins associés aux applets de commande sont désormais indépendants des barres obliques (/ et \ fonctionnent tous deux comme séparateur de répertoire)Paths given to cmdlets are now slash-agnostic (both / and \ work as directory separator)
  • La spécification de répertoire de base XDG est maintenant respectée et utilisée par défaut :XDG Base Directory Specification is now respected and used by default:
    • Le chemin du profil Linux/macOS se trouve dans ~/.config/powershell/profile.ps1The Linux/macOS profile path is located at ~/.config/powershell/profile.ps1
    • Le chemin d’enregistrement de l’historique se trouve dans ~/.local/share/powershell/PSReadline/ConsoleHost_history.txtThe history save path is located at ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
    • Le chemin du module utilisateur se trouve dans ~/.local/share/powershell/ModulesThe user module path is located at ~/.local/share/powershell/Modules
  • Prise en charge des noms de fichier et de dossier qui contiennent le caractère deux-points sous Unix.Support for file and folder names containing the colon character on Unix. (#4959)(#4959)
  • Prise en charge des noms de script ou des chemins complets qui contiennent des virgules.Support for script names or full paths that have commas. (#4136) (merci à @TimCurwick !)(#4136) (Thanks to @TimCurwick!)
  • Détection de l’utilisation de -LiteralPath afin de supprimer le développement des caractères génériques pour les applets de commande de navigation.Detect when -LiteralPath is used to suppress wildcard expansion for navigation cmdlets. (#5038)(#5038)
  • Mise à jour de Get-ChildItem pour fonctionner de manière plus similaire aux commandes natives *nix ls -R et Windows DIR /S.Updated Get-ChildItem to work more like the *nix ls -R and the Windows DIR /S native commands. Get-ChildItem retourne désormais les liens symboliques rencontrés lors d’une recherche récursive et n’effectue aucune recherche dans les répertoires ciblés par ces liens.Get-ChildItem now returns the symbolic links encountered during a recursive search and does not search the directories that those links target. (#3780)(#3780)

Respect de la casseCase sensitivity

Linux et macOS ont tendance à respecter la casse, tandis que Windows ne la respecte pas, tout en la préservant.Linux and macOS tend to be case-sensitive while Windows is case-insensitive while preserving case. En règle générale, PowerShell ne respecte pas la casse.In general, PowerShell is case insensitive.

Par exemple, les variables d’environnement respectant la casse sur macOS et Linux, la casse de la variable d’environnement PSModulePath a été normalisée.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 ne respecte pas la casse quand il utilise un chemin de fichier pour déterminer le nom du module.(#3255) Import-Module is case insensitive when it's using a file path to determine the module's name. (#5097)(#5097)

Prise en charge des installations côte à côteSupport for side-by-side installations

PowerShell Core est installé, configuré et exécuté séparément de Windows PowerShell.PowerShell Core is installed, configured, and executed separately from Windows PowerShell. PowerShell Core possède un package ZIP « portable ».PowerShell Core has a "portable" ZIP package. À l’aide du package ZIP, vous pouvez installer un nombre quelconque de versions n’importe où sur le disque, notamment en local sur une application qui accepte PowerShell en tant que dépendance.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. Une installation côte à côte facilite le test de nouvelles versions de PowerShell et la migration de scripts existants au fil du temps.Side-by-side installation makes it easier to test new versions of PowerShell and migrating existing scripts over time. Elle permet également une compatibilité descendante, car les scripts peuvent être épinglés aux versions spécifiques dont ils ont besoin.Side-by-side also enables backwards compatibility as scripts can be pinned to specific versions that they require.

Note

Par défaut, le programme d’installation MSI sur Windows effectue une installation de mise à jour sur place.By default, the MSI-based installer on Windows does an in-place update install.

powershell(.exe) renommé en pwsh(.exe)Renamed powershell(.exe) to pwsh(.exe)

Le nom binaire pour PowerShell Core powershell(.exe) a été remplacé par pwsh(.exe).The binary name for PowerShell Core has been changed from powershell(.exe) to pwsh(.exe). Cette modification fournit aux utilisateurs un moyen déterministe d’exécuter PowerShell Core sur les ordinateurs pour prendre en charge les installations Windows PowerShell et PowerShell Core côte à côte.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 est également beaucoup plus court et facile à taper.pwsh is also much shorter and easier to type.

Autres modifications apportées à pwsh(.exe) par rapport à powershell.exe :Additional changes to pwsh(.exe) from powershell.exe:

  • Remplacement du premier paramètre positionnel -Command par -File.Changed the first positional parameter from -Command to -File. Cette modification résout l’utilisation de #! (également appelé shebang) dans les scripts PowerShell qui sont exécutés à partir de shells autres que PowerShell sur des plateformes non-Windows.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. Cela signifie également que vous pouvez exécuter des commandes telles que pwsh foo.ps1 ou pwsh fooScript sans spécifier -File.It also means that you can run commands like pwsh foo.ps1 or pwsh fooScript without specifying -File. Toutefois, cette modification nécessite que vous indiquiez explicitement -c ou -Command quand vous essayez d’exécuter des commandes telles que 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 accepte le commutateur -i (ou -Interactive) pour indiquer un shell interactif.PowerShell Core accepts the -i (or -Interactive) switch to indicate an interactive shell. (#3558) Cela permet d’utiliser PowerShell comme shell par défaut sur les plateformes Unix.(#3558) This allows PowerShell to be used as a default shell on Unix platforms.
  • Paramètres -importsystemmodules et -psconsoleFile supprimés de pwsh.exe.Removed parameters -importsystemmodules and -psconsoleFile from pwsh.exe. (#4995)(#4995)
  • Modification de pwsh -version et de l’aide intégrée pour pwsh.exe afin de s’aligner sur les autres outils natifs.Changed pwsh -version and built-in help for pwsh.exe to align with other native tools. (#4958 et #4931) (merci @iSazonov)(#4958 & #4931) (Thanks @iSazonov)
  • Messages d’erreur d’arguments non valides pour -File et -Command, et codes de sortie conformes aux normes Unix (#4573)Invalid argument error messages for -File and -Command and exit codes consistent with Unix standards (#4573)
  • Ajout du paramètre -WindowStyle sur Windows.Added -WindowStyle parameter on Windows. (#4573) De même, les mises à jour des installations basées sur le package sur des plateformes non-Windows sont des mises à jour sur place.(#4573) Similarly, package-based installations updates on non-Windows platforms are in-place updates.

Compatibilité descendante avec Windows PowerShellBackwards compatibility with Windows PowerShell

L’objectif de PowerShell Core est de rester aussi compatible que possible avec Windows PowerShell.The goal of PowerShell Core is to remain as compatible as possible with Windows PowerShell. PowerShell Core utilise .NET Standard 2.0 pour assurer la compatibilité binaire avec des assemblys .NET existants.PowerShell Core uses .NET Standard 2.0 to provide binary compatibility with existing .NET assemblies. Comme un grand nombre de modules PowerShell dépendent de ces assemblys (souvent des DLL), .NET Standard leur permet de continuer à utiliser .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 inclut également une heuristique pour examiner les dossiers connus (comme celui où se trouve généralement le Global Assembly Cache sur le disque) et rechercher les dépendances des DLL .NET Framework.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.

Vous pouvez en savoir plus sur .NET Standard sur le Blog .NET, dans cette vidéo YouTube et via ce FAQ sur GitHub.You can learn more about .NET Standard on the [.NET Blog][], in this YouTube video, and via this FAQ on GitHub.

Tout a été mis en œuvre pour garantir que le langage PowerShell et les modules « intégrés » (comme Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility, etc.) fonctionnent de la même manière que dans 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. Dans de nombreux cas, avec l’aide de la communauté, nous avons ajouté de nouvelles fonctionnalités et des résolutions de bogues à ces applets de commande.In many cases, with the help of the community, we've added new capabilities and bug fixes to those cmdlets. Dans certains cas, en raison d’une dépendance manquante dans les couches .NET sous-jacentes, la fonctionnalité a été supprimée ou n’est pas disponible.In some cases, due to a missing dependency in underlying .NET layers, functionality was removed or is unavailable.

La plupart des modules qui font partie de Windows (par exemple, DnsClient, Hyper-V, NetTCPIP, Storage, etc.) et d’autres produits Microsoft, dont Azure et Office, n’ont pas encore été explicitement déplacés vers. 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. L’équipe PowerShell travaille avec ces équipes et groupes de produits pour valider et déplacer leurs modules existants vers PowerShell Core.The PowerShell team is working with these product groups and teams to validate and port their existing modules to PowerShell Core. Avec .NET Standard et CDXML, la plupart de ces modules Windows PowerShell classiques semblent fonctionner dans PowerShell Core, mais ils n’ont pas été clairement validés et ne sont pas formellement pris en charge.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.

En installant le module WindowsPSModulePath, vous pouvez utiliser des modules Windows PowerShell en ajoutant Windows PowerShell PSModulePath à PowerShell Core PSModulePath.By installing the WindowsPSModulePath module, you can use Windows PowerShell modules by appending the Windows PowerShell PSModulePath to your PowerShell Core PSModulePath.

Installez d’abord le module WindowsPSModulePath à partir de PowerShell Gallery :First, install the WindowsPSModulePath module from the PowerShell Gallery:

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

Après avoir installé ce module, exécutez l’applet de commande Add-WindowsPSModulePath pour ajouter Windows PowerShell PSModulePath à PowerShell Core :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

Prise en charge de DockerDocker support

PowerShell Core ajoute la prise en charge des conteneurs Docker pour toutes les principales plateformes que nous prenons en charge (dont plusieurs distributions Linux, Windows Server Core et 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).

Pour obtenir la liste complète, consultez les balises sur microsoft/powershell sur le hub Docker.For a complete list, check out the tags on microsoft/powershell on Docker Hub. Pour plus d’informations sur Docker et PowerShell Core, consultez Docker sur GitHub.For more information on Docker and PowerShell Core, see Docker on GitHub.

Communication à distance PowerShell SSHSSH-based PowerShell Remoting

Le protocole de communication à distance PowerShell fonctionne désormais avec le protocole SSH (Secure Shell) en plus du protocole de communication à distance PowerShell WinRM classique.The PowerShell Remoting Protocol (PSRP) now works with the Secure Shell (SSH) protocol in addition to the traditional WinRM-based PSRP.

Cela signifie que vous pouvez utiliser des applets de commande comme Enter-PSSession et New-PSSession, et vous authentifier à l’aide de SSH.This means that you can use cmdlets like Enter-PSSession and New-PSSession and authenticate using SSH. Il vous suffit d’inscrire PowerShell comme un sous-système avec un serveur SSH basé sur OpenSSH, et vous pouvez utiliser vos mécanismes d’authentification SSH existants (tels que les mots de passe ou les clés privées) avec la sémantique PSSession classique.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.

Pour plus d’informations sur la configuration et l’utilisation de la communication à distance SSH, consultez Communication à distance PowerShell via SSH.For more information on configuring and using SSH-based remoting, see PowerShell Remoting over SSH.

L’encodage par défaut est UTF-8 sans marque d’ordre d’octetDefault encoding is UTF-8 without a BOM

Dans le passé, les applets de commande Windows PowerShell telles que Get-Content ou Set-Content utilisaient des encodages différents comme ASCII et UTF-16.In the past, Windows PowerShell cmdlets like Get-Content, Set-Content used different encodings, such as ASCII and UTF-16. Le changement des valeurs par défaut d’encodage générait des problèmes lors de l’association d’applets de commande sans spécifier d’encodage.The variance in encoding defaults created problems when mixing cmdlets without specifying an encoding.

Les plateformes autres que Windows utilisent en général UTF-8 sans marque d’ordre d’octet comme encodage par défaut pour les fichiers texte.Non-Windows platforms traditionally use UTF-8 without a Byte Order Mark (BOM) as the default encoding for text files. D’autres outils et applications Windows passent de l’encodage UTF-16 à l’encodage UTF-8 sans marque d’ordre d’octet.More Windows applications and tools are moving away from UTF-16 and towards BOM-less UTF-8 encoding. PowerShell Core modifie l’encodage par défaut pour se conformer aux plus larges écosystèmes.PowerShell Core changes the default encoding to conform with the broader ecosystems.

Cela signifie que toutes les applets de commande intégrées qui utilisent le paramètre -Encoding utilisent la valeur par défaut UTF8NoBOM.This means that all built-in cmdlets that use the -Encoding parameter use the UTF8NoBOM value by default. Les applets de commande suivantes sont affectées par cette modification :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
  • New-ModuleManifestNew-ModuleManifest
  • Out-FileOut-File
  • Select-StringSelect-String
  • Send-MailMessageSend-MailMessage
  • Set-ContentSet-Content

Ces applets de commande ont également été mises à jour afin que le paramètre -Encoding accepte universellement System.Text.Encoding.These cmdlets have also been updated so that the -Encoding parameter universally accepts System.Text.Encoding.

La valeur par défaut $OutputEncoding a également été remplacée par UTF-8.The default value of $OutputEncoding has also been changed to UTF-8.

Comme bonne pratique, vous devez définir explicitement des encodages dans les scripts à l’aide du paramètre -Encoding pour produire un comportement déterministe sur plusieurs plateformes.As a best practice, you should explicitly set encodings in scripts using the -Encoding parameter to produce deterministic behavior across platforms.

Prendre en charge le lancement en arrière-plan des pipelines avec l’esperluette (&) (#3360)Support backgrounding of pipelines with ampersand (&) (#3360)

Le caractère & placé à la fin d’un pipeline entraîne l’exécution du pipeline comme une tâche PowerShell.Putting & at the end of a pipeline causes the pipeline to be run as a PowerShell job. Quand un pipeline est lancé en arrière-plan, un objet de traitement est retourné.When a pipeline is backgrounded, a job object is returned. Une fois que le pipeline est exécuté en tant que tâche, toutes les applets de commande *-Job standard peuvent être utilisées pour gérer la tâche.Once the pipeline is running as a job, all of the standard *-Job cmdlets can be used to manage the job. Les variables (en ignorant celles spécifiques au processus) utilisées dans le pipeline étant automatiquement copiées dans la tâche, Copy-Item $foo $bar & fonctionne tout simplement.Variables (ignoring process-specific variables) used in the pipeline are automatically copied to the job so Copy-Item $foo $bar & just works. La tâche est également exécutée dans le répertoire actuel au lieu du répertoire de base de l’utilisateur.The job is also run in the current directory instead of the user's home directory. Pour plus d’informations sur les tâches PowerShell, consultez about_Jobs.For more information about PowerShell jobs, see about_Jobs.

Gestion sémantique de versionSemantic versioning

  • SemanticVersion est devenu compatible avec SemVer 2.0.Made SemanticVersion compatible with SemVer 2.0. (#5037) (merci @iSazonov !)(#5037) (Thanks @iSazonov!)
  • Remplacement de la valeur ModuleVersion par défaut dans New-ModuleManifest par 0.0.1 pour s’aligner sur SemVer.Changed default ModuleVersion in New-ModuleManifest to 0.0.1 to align with SemVer. (#4842) (merci @LDSpits)(#4842) (Thanks @LDSpits)
  • Ajout de semver comme accélérateur de type pour System.Management.Automation.SemanticVersion.Added semver as a type accelerator for System.Management.Automation.SemanticVersion. (#4142) (merci à @oising !)(#4142) (Thanks to @oising!)
  • Activation de la comparaison entre une instance SemanticVersion et une instance Version qui est construite uniquement avec les valeurs de version Major et Minor.Enabled comparison between a SemanticVersion instance and a Version instance that is constructed only with Major and Minor version values.

Mises à jour du langageLanguage updates

  • Implémentation de l’analyse de la séquence d’échappement Unicode afin que les utilisateurs puissent utiliser des caractères Unicode comme arguments, chaînes ou noms de variables.Implement Unicode escape parsing so that users can use Unicode characters as arguments, strings, or variable names. (#3958) (merci à @rkeithhill !)(#3958) (Thanks to @rkeithhill!)
  • Ajout d’un nouveau caractère d’échappement pour Échap :`eAdded new escape character for ESC: `e
  • Ajout de la prise en charge de la conversion des enums en chaîne (#4318) (merci @KirkMunro)Added support for converting enums to string (#4318) (Thanks @KirkMunro)
  • Correction du cast d’un seul tableau d’éléments en une collection générique.Fixed casting single element array to a generic collection. (#3170)(#3170)
  • Ajout d’une surcharge de plage de caractères à l’opérateur .. de sorte que 'a'..'z' retourne les caractères 'a' à 'z'.Added character range overload to the .. operator, so 'a'..'z' returns characters from 'a' to 'z'. (#5026) (merci @IISResetMe !)(#5026) (Thanks @IISResetMe!)
  • Correction d’une attribution de variable pour ne pas écraser des variables en lecture seuleFixed variable assignment to not overwrite read-only variables
  • Transmission des variables locales de variables automatiques à 'DottedScopes' lors de l’exécution des applets de commande de script dans l’étendue actuelle (#4709)Push locals of automatic variables to 'DottedScopes' when dotting script cmdlets (#4709)
  • Activation de l’utilisation de l’option « Singleline, Multiline » dans l’opérateur de fractionnement (#4721) (merci @iSazonov)Enable use of 'Singleline, Multiline' option in split operator (#4721) (Thanks @iSazonov)

Mises à jour du moteurEngine updates

  • $PSVersionTable a quatre nouvelles propriétés :$PSVersionTable has four new properties:
    • PSEdition : sa valeur est Core sur PowerShell Core et Desktop sur Windows PowerShellPSEdition: This is set to Core on PowerShell Core and Desktop on Windows PowerShell
    • GitCommitId : il s’agit de l’ID de validation Git de la branche ou balise Git où PowerShell a été généré.GitCommitId: This is the Git commit ID of the Git branch or tag where PowerShell was built. Sur les versions publiées, il est probable qu’il soit identique à PSVersion.On released builds, it will likely be the same as PSVersion.
    • OS : il s’agit d’une chaîne de version du système d’exploitation retournée par [System.Runtime.InteropServices.RuntimeInformation]::OSDescriptionOS: This is an OS version string returned by [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
    • Platform : valeur retournée par [System.Environment]::OSVersion.Platform qui est égale à Win32NT sur Windows, MacOSX sur macOS et Unix sur Linux.Platform: This is returned by [System.Environment]::OSVersion.Platform It is set to Win32NT on Windows, MacOSX on macOS, and Unix on Linux.
  • Suppression de la propriété BuildVersion de $PSVersionTable.Removed the BuildVersion property from $PSVersionTable. Cette propriété était fortement liée à la version de build Windows.This property was strongly tied to the Windows build version. Au lieu de cela, nous vous recommandons d’utiliser GitCommitId pour récupérer la version de build exacte de PowerShell Core.Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core. (#3877) (merci à @iSazonov !)(#3877) (Thanks to @iSazonov!)
  • Suppression de la propriété ClrVersion de $PSVersionTable.Remove ClrVersion property from $PSVersionTable. Cette propriété n’est pas pertinente pour .NET Core et y a été conservée uniquement pour des raisons d’héritage spécifiques qui ne s’appliquent pas à PowerShell.This property is irrelevant for .NET Core, and was only preserved in .NET Core for specific legacy purposes that are inapplicable to PowerShell.
  • Ajout de trois nouvelles variables automatiques pour déterminer si PowerShell est exécuté dans un système d’exploitation particulier : $IsWindows, $IsMacOs et $IsLinux.Added three new automatic variables to determine whether PowerShell is running in a given OS: $IsWindows, $IsMacOs, and $IsLinux.
  • Ajout de GitCommitId à la bannière PowerShell Core.Add GitCommitId to PowerShell Core banner. Maintenant, vous n’êtes pas obligé d’exécuter $PSVersionTable dès que vous démarrez PowerShell pour obtenir la version !Now you don't have to run $PSVersionTable as soon as you start PowerShell to get the version! (#3916) (merci à @iSazonov !)(#3916) (Thanks to @iSazonov!)
  • Ajout d’un fichier de configuration JSON appelé powershell.config.json dans $PSHome pour stocker des paramètres requis avant l’heure de démarrage (par exemple, ExecutionPolicy).Add a JSON config file called powershell.config.json in $PSHome to store some settings required before startup time (e.g. ExecutionPolicy).
  • Pas de blocage du pipeline lors de l’exécution des fichiers EXE WindowsDon't block pipeline when running Windows EXE's
  • Activation de l’énumération des collections COM.Enabled enumeration of COM collections. (#4553)(#4553)

Mises à jour des applets de commandeCmdlet updates

Nouvelles applets de commandeNew cmdlets

  • Ajout de Get-Uptime à Microsoft.PowerShell.Utility.Add Get-Uptime to Microsoft.PowerShell.Utility.
  • Ajout de la commande Remove-Alias.Add Remove-Alias Command. (#5143) (merci @PowershellNinja !)(#5143) (Thanks @PowershellNinja!)
  • Ajout de Remove-Service au module de gestion.Add Remove-Service to Management module. (#4858) (merci @joandrsn !)(#4858) (Thanks @joandrsn!)

Applets de commande webWeb cmdlets

  • Ajout de la prise en charge de l’authentification par certificat pour les applets de commande web.Add certificate authentication support for web cmdlets. (#4646) (merci @markekraus)(#4646) (Thanks @markekraus)
  • Ajout de la prise en charge des en-têtes de contenu aux applets de commande web.Add support for content headers to web cmdlets. (#4494 et #4640) (merci @markekraus)(#4494 & #4640) (Thanks @markekraus)
  • Ajout de la prise en charge de plusieurs en-têtes de liens aux applets de commande web.Add multiple link header support to Web Cmdlets. (#5265) (merci @markekraus !)(#5265) (Thanks @markekraus!)
  • Prise en charge de la pagination des en-têtes de liens dans les applets de commande web (#3828)Support Link header pagination in web cmdlets (#3828)
    • Pour Invoke-WebRequest, quand la réponse inclut un en-tête de lien, nous créons une propriété RelationLink sous forme d’un dictionnaire qui représente les URL et les attributs rel, puis vérifions que les URL sont absolues pour que le développeur puisse les utiliser plus facilement.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.
    • Pour Invoke-RestMethod, quand la réponse inclut un en-tête de lien, nous présentons un commutateur -FollowRelLink pour suivre automatiquement les liens next rel jusqu’à ce qu’ils n’existent plus ou que nous ayons atteint la valeur du paramètre -MaximumFollowRelLink facultative.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.
  • Ajout du paramètre -CustomMethod aux applets de commande web pour autoriser les verbes de méthode non standard.Add -CustomMethod parameter to web cmdlets to allow for non-standard method verbs. (#3142) (merci à @Lee303 !)(#3142) (Thanks to @Lee303!)
  • Ajout de la prise en charge de SslProtocol aux applets de commande web.Add SslProtocol support to Web Cmdlets. (#5329) (merci @markekraus !)(#5329) (Thanks @markekraus!)
  • Ajout de la prise en charge de Multipart aux applets de commande web.Add Multipart support to web cmdlets. (#4782) (merci @markekraus)(#4782) (Thanks @markekraus)
  • Ajout de -NoProxy aux applets de commande web afin qu’elles ignorent le paramètre de proxy à l’échelle du système.Add -NoProxy to web cmdlets so that they ignore the system-wide proxy setting. (#3447) (merci à @TheFlyingCorpse !)(#3447) (Thanks to @TheFlyingCorpse!)
  • L’agent utilisateur des applets de commande web signale désormais la plateforme du système d’exploitation (#4937) (merci @LDSpits)User Agent of Web Cmdlets now reports the OS platform (#4937) (Thanks @LDSpits)
  • Ajout du commutateur -SkipHeaderValidation aux applets de commande web pour prendre en charge l’ajout d’en-têtes sans valider la valeur d’en-tête.Add -SkipHeaderValidation switch to web cmdlets to support adding headers without validating the header value. (#4085)(#4085)
  • Autorisation aux applets de commande web de ne pas valider le certificat HTTPS du serveur si nécessaire.Enable web cmdlets to not validate the HTTPS certificate of the server if required.
  • Ajout de paramètres d’authentification aux applets de commande web.Add authentication parameters to web cmdlets. (#5052) (merci @markekraus)(#5052) (Thanks @markekraus)
    • Ajout de -Authentication qui offre trois options : Basic, OAuth et Bearer.Add -Authentication that provides three options: Basic, OAuth, and Bearer.
    • Ajout de -Token pour obtenir le jeton du porteur pour les options OAuth et Bearer.Add -Token to get the bearer token for OAuth and Bearer options.
    • Ajout de -AllowUnencryptedAuthentication pour contourner l’authentification qui est fournie pour n’importe quel schéma de transport autre que HTTPS.Add -AllowUnencryptedAuthentication to bypass authentication that is provided for any transport scheme other than HTTPS.
  • Ajout de -ResponseHeadersVariable à Invoke-RestMethod pour activer la capture des en-têtes de réponse.Add -ResponseHeadersVariable to Invoke-RestMethod to enable the capture of response headers. (#4888) (merci @markekraus)(#4888) (Thanks @markekraus)
  • Correction des applets de commande web pour inclure la réponse HTTP dans l’exception quand le code d’état de réponse n’indique pas une réussite.Fix web cmdlets to include the HTTP response in the exception when the response status code is not success. (#3201)(#3201)
  • Remplacement des applets de commande web UserAgent WindowsPowerShell par PowerShell.Change web cmdlets UserAgent from WindowsPowerShell to PowerShell. (#4914) (merci @markekraus)(#4914) (Thanks @markekraus)
  • Ajout d’une détection ContentType explicite à Invoke-RestMethod (#4692)Add explicit ContentType detection to Invoke-RestMethod (#4692)
  • Correction des applets de commande web -SkipHeaderValidation pour utiliser des en-têtes d’agent utilisateur non standard.Fix web cmdlets -SkipHeaderValidation to work with non-standard User-Agent headers. (#4479 et #4512) (merci @markekraus)(#4479 & #4512) (Thanks @markekraus)

Applets de commande JSONJSON cmdlets

  • Ajout de -AsHashtable à ConvertFrom-Json pour retourner Hashtable à la place.Add -AsHashtable to ConvertFrom-Json to return a Hashtable instead. (#5043) (merci @bergmeister !)(#5043) (Thanks @bergmeister!)
  • Utilisation d’un formateur amélioré avec une sortie ConvertTo-Json.Use prettier formatter with ConvertTo-Json output. (#2787) (merci à @kittholland !)(#2787) (Thanks to @kittholland!)
  • Ajout de la prise en charge de sérialisation Jobject à ConvertTo-Json.Add Jobject serialization support to ConvertTo-Json. (#5141)(#5141)
  • Correction de ConvertFrom-Json pour désérialiser un tableau de chaînes provenant du pipeline qui créent ensemble une chaîne JSON complète.Fix ConvertFrom-Json to deserialize an array of strings from the pipeline that together construct a complete JSON string. Cela résout certains cas où les nouvelles lignes pourraient arrêter l’analyse JSON.This fixes some cases where newlines would break JSON parsing. (#3823)(#3823)
  • Suppression de la propriété AliasProperty "Count" définie pour System.Array.Remove the AliasProperty "Count" defined for System.Array. Cette opération supprime la propriété Count superflue sur certaines sorties ConvertFrom-Json.This removes the extraneous Count property on some ConvertFrom-Json output. (#3231) (merci à @PetSerAl !)(#3231) (Thanks to @PetSerAl!)

Applets de commande CSVCSV cmdlets

  • Ajout de la prise en charge de PSTypeName pour Import-Csv et ConvertFrom-Csv.Add PSTypeName Support for Import-Csv and ConvertFrom-Csv. (#5389) (merci @markekraus !)(#5389) (Thanks @markekraus!)
  • Import-Csv doit prendre en charge CR, LF et CRLF comme séparateurs de ligne.Make Import-Csv support CR, LF, and CRLF as line delimiters. (#5363) (merci @iSazonov !)(#5363) (Thanks @iSazonov!)
  • -NoTypeInformation doit être la valeur par défaut sur Export-Csv et ConvertTo-Csv.Make -NoTypeInformation the default on Export-Csv and ConvertTo-Csv. (#5164) (merci @markekraus)(#5164) (Thanks @markekraus)

Applets de commande de serviceService cmdlets

  • Ajout des propriétés UserName, Description, DelayedAutoStart, BinaryPathName et StartupType aux objets ServiceController retournés par Get-Service.Add properties UserName, Description, DelayedAutoStart, BinaryPathName, and StartupType to the ServiceController objects returned by Get-Service. (#4907) (merci @joandrsn)(#4907) (Thanks @joandrsn)
  • Ajout de fonctionnalités pour définir les informations d’identification sur la commande Set-Service.Add functionality to set credentials on Set-Service command. (#4844) (merci @joandrsn)(#4844) (Thanks @joandrsn)

Autres applets de commandeOther cmdlets

  • Ajout d’un paramètre à Get-ChildItem appelé -FollowSymlink qui traverse les liens symboliques à la demande, avec des recherches de boucles de liens.Add a parameter to Get-ChildItem called -FollowSymlink that traverses symlinks on demand, with checks for link loops. (#4020)(#4020)
  • Mise à jour de Add-Type pour prendre en charge CSharpVersion7.Update Add-Type to support CSharpVersion7. (#3933) (merci à @iSazonov)(#3933) (Thanks to @iSazonov)
  • Suppression du module Microsoft.PowerShell.LocalAccounts en raison de l’utilisation des API non prises en charge jusqu’à ce qu’une meilleure solution soit trouvée.Remove the Microsoft.PowerShell.LocalAccounts module due to the use of unsupported APIs until a better solution is found. (#4302)(#4302)
  • Suppression des applets de commande *-Counter dans Microsoft.PowerShell.Diagnostics en raison de l’utilisation des API non prises en charge jusqu’à ce qu’une meilleure solution soit trouvée.Remove the *-Counter cmdlets in Microsoft.PowerShell.Diagnostics due to the use of unsupported APIs until a better solution is found. (#4303)(#4303)
  • Ajout de la prise en charge de Invoke-Item -Path <folder>.Add support for Invoke-Item -Path <folder>. (#4262)(#4262)
  • Ajout des commutateurs -Extension et -LeafBase à Split-Path afin que vous puissiez fractionner les chemins entre l’extension de nom de fichier et le reste du nom de fichier.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) (merci à @powercode !)(#2721) (Thanks to @powercode!)
  • Ajout des paramètres -Top et -Bottom à Sort-Object pour un tri N haut/basAdd parameters -Top and -Bottom to Sort-Object for Top/Bottom N sort
  • Exposition du processus parent d’un processus en ajoutant CodeProperty "Parent" à System.Diagnostics.Process.Expose a process' parent process by adding the CodeProperty "Parent" to System.Diagnostics.Process. (#2850) (merci à @powercode !)(#2850) (Thanks to @powercode!)
  • Utilisation de Mo au lieu de Ko pour les colonnes de mémoire de Get-ProcessUse MB instead of KB for memory columns of Get-Process
  • Ajout du commutateur -NoNewLine pour Out-String.Add -NoNewLine switch for Out-String. (#5056) (merci @raghav710)(#5056) (Thanks @raghav710)
  • L’applet de commande Move-Item honore les paramètres -Include, -Exclude et -Filter.Move-Item cmdlet honors -Include, -Exclude, and -Filter parameters. (#3878)(#3878)
  • Autorisation d’utiliser * dans le chemin du Registre pour Remove-Item.Allow * to be used in registry path for Remove-Item. (#4866)(#4866)
  • Ajout de -Title à Get-Credential et unification de l’expérience des invites sur plusieurs plateformes.Add -Title to Get-Credential and unify the prompt experience across platforms.
  • Ajout du paramètre -TimeOut à Test-Connection.Add the -TimeOut parameter to Test-Connection. (#2492)(#2492)
  • Les applets de commande Get-AuthenticodeSignature peuvent désormais obtenir un horodatage de signature de fichier.Get-AuthenticodeSignature cmdlets can now get file signature timestamp. (#4061)(#4061)
  • Suppression du commutateur -ShowWindow non pris en charge de Get-Help.Remove unsupported -ShowWindow switch from Get-Help. (#4903)(#4903)
  • Correction de Get-Content -Delimiter pour ne pas inclure le séparateur dans les éléments de tableau retournés (#3706) (merci @mklement0)Fix Get-Content -Delimiter to not include the delimiter in the array elements returned (#3706) (Thanks @mklement0)
  • Ajout des paramètres Meta, Charset et Transitional à ConvertTo-HTML (#4184) (merci @ergo3114)Add Meta, Charset, and Transitional parameters to ConvertTo-HTML (#4184) (Thanks @ergo3114)
  • Ajout des propriétés WindowsUBR et WindowsVersion au résultat Get-ComputerInfoAdd WindowsUBR and WindowsVersion properties to Get-ComputerInfo result
  • Ajout du paramètre -Group à Get-VerbAdd -Group parameter to Get-Verb
  • Ajout de la prise en charge de ShouldProcess à New-FileCatalog et Test-FileCatalog (correctifs -WhatIf et -Confirm).Add ShouldProcess support to New-FileCatalog and Test-FileCatalog (fixes -WhatIf and -Confirm). (#3074) (merci à @iSazonov !)(#3074) (Thanks to @iSazonov!)
  • Ajout du commutateur -WhatIf à l’applet de commande Start-Process (#4735) (merci @sarithsutha)Add -WhatIf switch to Start-Process cmdlet (#4735) (Thanks @sarithsutha)
  • Ajout de ValidateNotNullOrEmpty à de nombreux paramètres existants.Add ValidateNotNullOrEmpty too many existing parameters.

Saisie semi-automatique via la touche TabTab completion

  • Inférence de type améliorée dans la saisie semi-automatique via la touche Tab en fonction des valeurs de variables d’exécution.Enhanced the type inference in tab completion based on runtime variable values. (#2744) (merci à @powercode !) Cela permet la saisie semi-automatique via la touche Tab dans des situations comme :(#2744) (Thanks to @powercode!) This enables tab completion in situations like:

    $p = Get-Process
    $p | Foreach-Object Prio<tab>
    
  • Ajout de la saisie semi-automatique via la touche Tab de table de hachage pour -Property de Select-Object.Add Hashtable tab completion for -Property of Select-Object. (#3625) (merci à @powercode !)(#3625) (Thanks to @powercode)

  • Activation de la saisie semi-automatique d’argument pour -ExcludeProperty et -ExpandProperty de Select-Object.Enable argument auto-completion for -ExcludeProperty and -ExpandProperty of Select-Object. (#3443) (merci à @iSazonov !)(#3443) (Thanks to @iSazonov!)
  • Correction d’un bogue dans la saisie semi-automatique via la touche Tab pour que native.exe --<tab> puisse appeler l’intégralité du code natif.Fix a bug in tab completion to make native.exe --<tab> call into native completer. (#3633) (merci à @powercode !)(#3633) (Thanks to @powercode!)

Modifications avec ruptureBreaking changes

Nous avons introduit un certain nombre de modifications avec rupture dans PowerShell Core 6.0.We've introduced a number of breaking changes in PowerShell Core 6.0. Pour plus d’informations détaillées sur ces modifications, consultez Modifications avec rupture dans PowerShell Core 6.0.To read more about them in detail, see Breaking Changes in PowerShell Core 6.0.

DébogageDebugging

  • Prise en charge du débogage pas à pas distant pour Invoke-Command -ComputerName.Support for remote step-in debugging for Invoke-Command -ComputerName. (#3015)(#3015)
  • Activation de la journalisation de débogage Binder dans PowerShell CoreEnable binder debug logging in PowerShell Core

Mises à jour de FilesystemFilesystem updates

  • Activation de l’utilisation du fournisseur Filesystem à partir d’un chemin UNC.Enable usage of the Filesystem provider from a UNC path. ($4998)($4998)
  • Split-Path fonctionne désormais avec des racines UNCSplit-Path now works with UNC roots
  • cd sans argument se comporte maintenant comme cd ~cd with no arguments now behaves as cd ~
  • Correction de PowerShell Core pour autoriser l’utilisation de chemins qui ont une longueur de plus de 260 caractères.Fixed PowerShell Core to allow use of paths that are more than 260 characters long. (#3960)(#3960)

Résolutions de bogues et améliorations des performancesBug fixes and performance improvements

Nous avons apporté de nombreuses améliorations aux performances dans PowerShell, notamment dans le temps de démarrage, les diverses applets de commande intégrées et l’interaction avec des fichiers binaires natifs.We've made many improvements to performance across PowerShell, including in startup time, various built-in cmdlets, and interaction with native binaries.

Nous avons également résolu un certain nombre de bogues dans PowerShell Core.We've also fixed a number of bugs within PowerShell Core. Pour obtenir une liste complète des correctifs et modifications, consultez notre journal des modifications sur GitHub.For a complete list of fixes and changes, check out our [changelog][] on GitHub.

TélémétrieTelemetry

  • PowerShell Core 6.0 a ajouté la télémétrie à l’hôte de la console pour signaler deux valeurs (#3620) :PowerShell Core 6.0 added telemetry to the console host to report two values (#3620):
    • la plateforme du système d’exploitation ($PSVersionTable.OSDescription)the OS platform ($PSVersionTable.OSDescription)
    • la version exacte de PowerShell ($PSVersionTable.GitCommitId)the exact version of PowerShell ($PSVersionTable.GitCommitId)

Si vous souhaitez désactiver cette télémétrie, supprimez simplement $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. La suppression de ce fichier permet d’ignorer toutes les données de télémétrie même avant la première exécution de PowerShell.Deleting this file bypasses all telemetry even before the first run of PowerShell. Nous prévoyons également d’exposer ces données de télémétrie et les analyses recueillies de la télémétrie dans le tableau de bord de la communauté.We also plan on exposing this telemetry data and the insights we glean from the telemetry in the community dashboard. Vous trouverez plus d’informations sur la façon dont nous utilisons ces données dans ce billet de blog.You can find out more about how we use this data in this blog post.