Nouveautés de PowerShell 7.1 –
PowerShell 7.1 peut ne pas sembler avoir d’énormes changements à première vue, mais il se passe beaucoup plus de choses sous le capot que ce à quoi on pourrait s’attendre. Il existe également un certain nombre de fonctionnalités et d’outils très utiles qui peuvent améliorer vos scripts et vous aider à développer des scripts encore meilleurs. PowerShell 7.1 est sorti le 11/11/2020 et est rapidement adopté par de nombreux membres de la communauté informatique. Cet article présente un certain nombre d’améliorations et d’améliorations, mais n’est en aucun cas une collection complète de toutes les améliorations.
Sommaire
Changements architecturaux
La plus grande amélioration est celle de PowerShell 7.1 en cours de construction sur le .NET 5 qui vient de sortir. Il s’agit d’une version majeure qui poursuit le voyage d’unification que .NET a suivi avec .NET et .NET Core traditionnels. Avec .NET 5, les premiers pas vers un noyau unifié sont réalisés. PowerShell 7.1 tire parti des nombreuses améliorations des performances et des améliorations linguistiques.
Modules de base mis à jour et améliorations de chargement
PowerShell 7.1 comprend plusieurs mises à jour du module principal. Notamment, PSReadLine 2.1.0 inclut désormais IntelliSense prédictif, qui est un moteur de prédiction de syntaxe de type coquille de poisson. De plus, de nombreux correctifs ont été apportés au mode vi et la possibilité supplémentaire de définir le MaximumHistoryCount
à partir d’un profil utilisateur.
Améliorer WinCompat
chargement du module, les modules PowerShell 7 sont désormais traités avec une priorité plus élevée. Cela évite l’écrasement accidentel des modules principaux lors de l’utilisation du WinCompat
mode pour permettre aux modules PowerShell 7 non natifs de fonctionner dans la version mise à jour de PowerShell.
Nouvelles fonctionnalités du moteur
Il existe, bien sûr, plusieurs nouvelles fonctionnalités de base qui sont utiles. Les trois principaux sont:
PSNullConditionalOperators
PSUnixStat
- Prise en charge de TLS 1.3
Les opérateurs conditionnels nuls ont en fait été introduits dans PowerShell 7, mais en tant que fonctionnalité expérimentale. Cette fonctionnalité est désormais intégrée et intégrée par défaut dans PowerShell 7.1. Il y a deux nouveaux opérateurs qui sont ??
et ??=
.
# This typically replaces an if null statement and will run the output if the value is null.
$Object ?? '$object contains a $null value'
# When the value of the conditional is null then, assign that object to the value on the right of the conditional.
$Object ??= 'This value is assigned on a $null $object'
Ensuite, nous avons le PSUnixStat
option, ce fichier indique qu’il est maintenant déplacé hors de experimental mais peut parfois apparaître comme expérimental. Cette fonctionnalité ne sera disponible que sur les systèmes Linux. Vous pouvez connaître son état et activer la fonction en procédant comme suit.
# Make sure this feature is enabled, will need to restart the PowerShell session
Get-ExperimentalFeature -Name 'PSUnixFileStat' | Enable-ExperimentalFeature
Cette fonctionnalité vous donnera un nouveau UnixMode
propriété qui affiche les informations d’Unix stat
commander. Ceci est très utile pour ceux qui ont l’habitude de travailler avec les autorisations Linux traditionnelles.
Enfin, la prise en charge de TLS 1.3 est désormais incluse dans les différentes applets de commande Web telles que Invoke-RestMethod
et Invoke-WebRequest
. Pour ceux qui souhaitent utiliser les améliorations de performances et de sécurité incluses dans cette nouvelle version TLS et qui peuvent interagir avec un point final capable de cela, ce sera un ajout très utile. Si le site prend en charge TLS 1.3, le contenu sera retourné et négocié par la nouvelle version du protocole.
Invoke-RestMethod -Uri '<https://mysite.com>' -SslProtocol Tls13
Améliorations supplémentaires
Il existe une poignée de fonctionnalités et d’améliorations supplémentaires qui aident à améliorer vos capacités et votre structure de script.
- Dans l’environnement Windows,
Start-Process
inclura désormais, par défaut, toutes les variables d’environnement de la session en cours. Uniquement lors de l’utilisation duUseNewEnvironment
Un environnement sera créé avec de nouvelles variables de processus. - le
ForEach-Object -Parallel
La commande réutilisera désormais les espaces d’exécution. Cela améliorera l’utilisation de la mémoire et des performances. Pour ceux qui craignent que l’isolation maximale de l’espace d’exécution ne soit pas atteinte, le paramètreUseNewRunspace
est désormais inclus pour créer un tout nouvel espace d’exécution pour chaque itération de pipeline. - le
Get-Random
la commande inclut maintenant leShuffle
paramètre. Cela prendra une collection canalisée dansGet-Random
ou viaInputObject
et renvoyer la même collection mais mélangée dans l’ordre. - Ajouter le paramètre
AsUTC
à laGet-Date
commander. Cela simplifie les utilitaires de conversion traditionnels nécessaires, comme avec le[DateTime]
objet. - Mettre en œuvre le
Stop-Computer
cmdlet pour les systèmes Linux et macOS. Cela repose sur le binaire/sbin/shutdown
être disponible. Si le système d’exploitation est Linux, l’argument passé estnow
et si le système d’exploitation est macOS, l’argument passé est-P now
. - Semblable à
Stop-Computer
,Restart-Computer
est désormais implémenté pour les systèmes Linux et macOS. Cela utilise le binaire/sbin/shutdown
et passe l’argument de-r now
.
Changements de rupture
Enfin, il existe une poignée de changements de rupture. Il y en a plus, mais ces deux peuvent affecter les scripts plus que d’autres.
- Le changement de nom de
FromUnixTime
àUnixTimeSeconds
sur leGet-Date
La cmdlet pour autoriser l’entrée de l’heure Unix peut avoir un impact sur les scripts qui utilisent cette fonctionnalité et devront être mises à jour. - Ne pas envelopper le résultat de retour dans
PSObject
lors de la conversion de ScriptBlock en types délégués. Il s’agit d’une situation de cas extrême lors de la conversion d’un scriptblock et vous voulez que le type de retour soit l’objet d’origine et non pas converti en PSObject.
Conclusion
PowerShell 7.1 peut ne pas sembler avoir introduit d’énormes nouvelles fonctionnalités, mais il existe de nombreuses améliorations incrémentielles et des améliorations majeures du moteur backend. L’écosystème et le langage PowerShell continuent de s’améliorer à chaque itération et deviennent rapidement un langage populaire et incontournable pour les administrateurs système du monde entier.