Nouveautés de PowerShell 7.1 – –

Logo Powershell

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 en train de devenir 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.

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 inclut plusieurs mises à jour du module principal. Notamment, PSReadLine 2.1.0 inclut désormais IntelliSense prédictif, qui est un moteur de prédiction syntaxique 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.

  Modifier la couleur de la barre des tâches, du menu Démarrer et des bordures Windows dans Windows 10

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 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 devenue courante et incluse 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 une nouvelle 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.

  Six erreurs courantes commises par les débutants dans Smarthome

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 contribuent à 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 du UseNewEnvironment 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ètre UseNewRunspace 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 le Shuffle paramètre. Cela prendra une collection canalisée dans Get-Random ou via InputObject et renvoyez la même collection mais mélangée dans l’ordre.
  • Ajouter le paramètre AsUTC à la Get-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é est now 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 y a 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 le Get-Date l’applet de commande pour autoriser l’entrée de l’heure Unix peut avoir un impact sur les scripts qui utilisent cette fonctionnalité et devront être mis à 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.
  Comment obtenir l'application UWP Intel Graphics Command Center sur Windows 10

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.