Comment puis-je déterminer la version de PowerShell est installé sur un ordinateur, et en effet, s'il est installé?
Réponses
Trop de publicités?Je voudrais utiliser Get-Hôte ou $PSVersionTable. Comme Andy Schneider points, $PSVersionTable ne fonctionne pas dans la version 1; il a été introduit dans la version 2.
get-host
Name : ConsoleHost
Version : 2.0
InstanceId : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-GB
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
$PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4200
BuildVersion 6.0.6002.18111
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Vous pouvez regarder le construit dans la variable $psversiontable. S'il n'existe pas, vous avez V1. Si elle n'existe pas, il va vous donner toutes les informations dont vous avez besoin.
1 > $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.4927
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Pour déterminer si PowerShell est installé, vous pouvez vérifier le registre de l'existence de
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
et
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
et, si elle existe, si la valeur est 1 (installé), comme détaillé dans le billet de blog de Vérifier si PowerShell installé et la version.
Pour déterminer la version de PowerShell qui est installé, vous pouvez vérifier les clés de registre
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
et
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
.
Pour déterminer la version de PowerShell qui est installé à partir d'un .ps1 script, vous pouvez utiliser la ligne de commande, comme indiqué sur la PowerShell.com en ce Qui PowerShell Version Suis-je en cours d'Exécution.
$isV2 = test-path variable:\psversiontable
Le même site donne aussi une fonction de retour de la version:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
Recommandées par Microsoft compatible méthode pour vérifier si PowerShell est installé et la détermination de la version installée est de regarder les deux clés de registre spécifiques. J'en ai reproduit les détails ici au cas où le lien est rompu.
Selon la page du lien:
Selon toute autre clé de registre(s), ou de la version du PowerShell.exe ou de l'emplacement de PowerShell.exe n'est pas garanti sur le long terme.
Pour vérifier si une version de PowerShell est installé, vérifiez la valeur suivante dans le registre:
- Emplacement De La Clé:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
- Nom De La Valeur: Installer
- Type de valeur: REG_DWORD
- Valeur de Données: 0 x 00000001 (1
Pour vérifier si la version 1.0 ou 2.0 de PowerShell est installé, vérifiez la valeur suivante dans le registre:
- Emplacement De La Clé:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
- Nom De La Valeur: PowerShellVersion
- Type de valeur: REG_SZ
- Données De La Valeur: <1.0 | 2.0>