Adam lautomate

Dans PowerShell, il existe des millions de façons de faire la même chose (ou de sen rapprocher). Dans cet article de blog, vous apprendrez comment vérifier la version de PowerShell que vous avez sur les ordinateurs locaux et distants. Nous allons couvrir les mauvaises méthodes et la méthode recommandée.

Si vous souhaitez passer du débutant PowerShell au gourou PowerShell, je vous recommande de dévorer ce GRATUIT mini-cours sur la création dun outil PowerShell. Ceci est un didacticiel pas à pas avec des explications complètes et des conseils dAdam lautomate!

Il existe des sites Web qui montrent différentes façons de vérifier la version de Powershell. Mais aucun na compilé une liste complète de tous. Jai décidé de changer cela.

Toutes ces méthodes devraient fonctionner à la fois dans Windows PowerShell et PowerShell Core. Ces méthodes devraient également fonctionner dans les versions 1.0 de Windows PowerShell jusquà PowerShell 7.

Les façons dont vous pouvez trouver une version de PowerShell que vous exécutez sont:

  1. La propriété (Get-Host).Version
  2. La propriété $host.Version
  3. Le registre (Windows PowerShell uniquement)
  4. La propriété $PSVersionTable.PSVersion

Décrivons tous les moyens pour trouver la version de PowerShell du moins au plus recommandé .

Table des matières

Get-Host

PowerShell a un concept connu sous le nom dhôtes. Un hôte est un programme qui héberge le moteur PowerShell. Ce nest pas le moteur PowerShell lui-même. La console PowerShell ou un éditeur de code avec un terminal intégré sont des hôtes PowerShell.

Un hôte peut avoir une version complètement indépendante de PowerShell lui-même. Cela peut être trompeur pour de nombreux nouveaux arrivants. Laissez-moi vous montrer pourquoi.

Si vous exécutez (Get-Host).Version, vous verrez quil renvoie un numéro de version qui ressemble à la version du moteur PowerShell. Les apparences peuvent être trompeuses.

Ci-dessous, jai exécuté Get-Host sur Windows PowerShell 5.1 et vous pouvez voir quil revient avec 5.1.17134.858. Cela ressemble à une version légitime.

Cependant, parfois, lorsque vous exécutez Get-Host dans un terminal intégré, le la version nest pas la même. Bien que généralement lhôte représente la même version du moteur, il nest pas nécessaire de toujours le faire.

Vérifiez la version de Powershell via Get-Host sur des ordinateurs distants

Même si Get-Host semble renvoyer la même version lorsquelle est exécutée sur un ordinateur local, elle ne le sera jamais sur des ordinateurs distants.

Par exemple, exécutons Get-Host sur un serveur Windows Server 2016 distant via Invoke-Command et voyez ce qui se passe.

La dernière fois que jai vérifié, il nest pas possible dexécuter PowerShell v1 sur Windows Server 2016.

Sappuyer sur Get-Host est simplement une mauvaise idée.

Vérifiez la commande Powershell Version $ host.Version

Le référencement de $host.Version est une autre façon de vérifier la version de Powershell. La variable $host est une variable automatique qui renvoie la même sortie que Get-Host.

Référencement $host.Version

Il ny a rien de spécial à propos de cette méthode. Cest tout simplement la même chose que dexécuter Get-Host.

$ host.Version sur des ordinateurs distants

Vous verrez le même comportement via PowerShell Remoting avec $host.Version comme vous exécuterez Get-Host.

Danger, Will Robinson!

Registre

Si vous ne souhaitez pas ouvrir PowerShell lui-même, vous pouvez également vérifier le registre. La version de PowerShell est cachée sous une valeur dans le chemin de la clé de registre HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Cette clé de registre a une valeur appelée PowerShellVersion que vous pouvez référencer en utilisant Get-ItemProperty.

Vous pouvez voir que ceci version est similaire mais ninclut pas la révision comme le font les autres options.

Utilisation dautres outils

Lutilisation du registre signifie également que vous navez pas du tout besoin dutiliser PowerShell pour trouver la version. Vous pouvez exécuter des commandes à partir de linvite de commande ou dun autre outil capable de lire le registre.

Registre sur les ordinateurs distants

Le registre est statique et les valeurs ne changeront pas localement ou à distance. Vous pouvez être sûr que ce que vous voyez localement sera le même que vous voyez à distance.

Afficher la même version localement et à distance est une bonne chose. Mais jai un meilleur moyen de vous montrer lutilisation de la variable automatique $PSVersionTable.

Vérifiez la version de Powershell via la commande $ PSVersionTable.PSVersion

La dernière et dernière méthode fait référence à la propriété PSVersion sur la variable automatique $PSVersionTable.Cette méthode représentera toujours le moteur PowerShell.

La variable automatique $PSVersionTable est une table de hachage en lecture seule qui renvoie des informations spécifiquement sur la version du moteur PowerShell. Cette variable automatique renvoie non seulement la version mais également PSEdition. Cette propriété peut être Core ou Desktop pour fournir plus dinformations sur lédition de PowerShell en cours dexécution.

Sortie $ PSVersionTable

$ PSVersionTable sur des ordinateurs distants

Utilisation de $PSVersionTable la variable automatique est précise localement comme à distance. Vous pouvez voir ci-dessous quen enveloppant $PSVersionTable.PSVersion dans un scriptblock et en exécutant ce code sur un ordinateur distant, il renverra la même version.

Résumé

Dans cet article de blog, vous avez appris toutes les façons de vérifier la version de PowerShell à la fois localement et à distance. Jespère que les premières méthodes vous ont donné une idée des moyens de ne pas vérifier la version!

Je recommande de toujours utiliser $PSVersionTable.PSVersion. Toutes les autres méthodes peuvent sembler similaires à la version du moteur PowerShell mais ne reflètent pas toujours la version du moteur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *