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:
- La propriété
(Get-Host).Version
- La propriété
$host.Version
- Le registre (Windows PowerShell uniquement)
- 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
.
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.
$ 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.