En PowerShell, il existe une multitude de façons de faire la même chose (ou quelque chose de similaire). Dans cet article de blog, vous apprendrez toutes les façons de vérifier la version de votre PowerShell sur les ordinateurs locaux et distants. Nous examinerons les mauvaises méthodes et ma méthode recommandée.
Il existe des sites Web qui montrent diverses façons de vérifier votre version de Powershell. Mais aucun n’a compilé une liste complète de toutes ces méthodes. J’ai 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 de Windows PowerShell 1.0 jusqu’à PowerShell 7.
Les façons de connaître la version de PowerShell que vous utilisez sont les suivantes :
- La propriété
(Get-Host).Version
- La propriété
$host.Version
- Le registre (uniquement dans Windows PowerShell)
- La propriété
$PSVersionTable.PSVersion
Explorons toutes les façons de trouver la version de PowerShell, de la moins recommandée à la plus recommandée.
Get-Host
PowerShell utilise un concept appelé hôtes. Un hôte est un programme qui héberge le moteur PowerShell. Ce n’est 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.
A host can have a version that is completely independent of PowerShell itself. This can be deceiving to many newcomers. Let me show you why.
Si vous exécutez (Get-Host).Version
, vous verrez qu’il renvoie un numéro de version qui semble être la version du moteur PowerShell. Les apparences peuvent être trompeuses.
Ci-dessous, j’ai exécuté Get-Host
sur Windows PowerShell 5.1 et vous pouvez voir qu’il revient avec 5.1.17134.858. Cela semble être une version légitime.
Cependant, parfois lorsque vous exécutez Get-Host
dans un terminal intégré, la version n’est pas la même. Bien que généralement, l’hôte représentera la même version du moteur, ce n’est pas nécessairement toujours le cas.
Vérifier la version de PowerShell via Get-Host sur des ordinateurs distants
Même si Get-Host
semble renvoyer la même version lorsqu’il est exécuté sur un ordinateur local, ce ne sera jamais le cas sur des ordinateurs distants.
Par exemple, exécutons Get-Host
sur un serveur distant Windows Server 2016 via Invoke-Command
et voyons ce qui se passe.
La dernière fois que j’ai vérifié, il n’est pas possible d’exécuter PowerShell v1 sur Windows Server 2016.
Se fier à Get-Host
est une mauvaise idée en général.
Vérifier la version de PowerShell avec la commande $host.Version
Référencer $host.Version
est un autre moyen de vérifier la version de PowerShell. La variable $host
est une variable automatique qui renvoie la même sortie que Get-Host
.

$host.Version
Il n’y a rien de spécial à propos de cette méthode. C’est simplement la même chose que d’exécuter Get-Host
.
$host.Version sur des ordinateurs distants
Vous verrez le même comportement via PowerShell Remoting avec $host.Version
que si vous exécutez Get-Host
.
Attention, Will Robinson !
Registre
Si vous ne voulez pas ouvrir PowerShell lui-même, vous pouvez également vérifier le registre. La version de PowerShell est cachée sous une valeur dans 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 cette version est similaire mais n’inclut pas la révision comme le font les autres options.
Utilisation d’autres outils
Utiliser le registre signifie également que vous n’avez pas besoin d’utiliser PowerShell du tout pour trouver la version. Vous pouvez exécuter des commandes depuis l’invite de commandes ou un autre outil qui peut lire le registre.
Registre sur des 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 ce que vous voyez à distance.
Afficher la même version localement et à distance est bien. Mais j’ai une meilleure façon de vous montrer en utilisant la variable automatique $PSVersionTable
.
Vérifiez la version de Powershell avec la commande $PSVersionTable.PSVersion
La dernière méthode, et la méthode finale, consiste à faire référence à la propriété PSVersion
de 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 retourne des informations spécifiques sur la version du moteur PowerShell. Cette variable automatique ne retourne pas seulement la version mais aussi l’édition. Cette propriété peut être soit Core soit Desktop pour fournir davantage d’informations sur l’édition de PowerShell en cours d’exécution.

$PSVersionTable sur des ordinateurs distants
L’utilisation de la variable automatique $PSVersionTable
est aussi précise localement que distante. Vous pouvez voir ci-dessous qu’en enveloppant $PSVersionTable.PSVersion
dans un scriptblock et en exécutant ce code sur un ordinateur distant, il retournera 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. J’espère que les premières méthodes vous ont donné une idée des façons de ne pas vérifier la version!
I recommend always using $PSVersionTable.PSVersion
. All of the other methods may appear similar to the PowerShell engine version but may not always reflect the engine version.
Si j’ai manqué une méthode, veuillez me le faire savoir dans les commentaires. Je serai ravi de mettre à jour l’article et de vous donner du crédit.