检查powershell版本并根据版本运行功能

时间:2017-12-20 16:18:10

标签: powershell

我试图检查powershell版本,根据版本,由于不同版本之间的命令和语法差异,我需要运行特定的功能。我试图创建一个只有版本号的变量,以便于比较。这是代码。

$PSversion = {$PSVersionTable.PSVersion | sort-object major | ForEach-Object     {$_.major}}

Switch ($PSversion) {
    2 {V2}
    4 {V4}
    5 {V5}
}

function V2 {
    "You have Powershell Version 2"
}

function V4 {
    "You have Powershell Version 4"
}

function V5 {
    "You have Powershell Version 5"
}

当我运行脚本时,它返回一个空行,当我打印出变量的内容时,我得到了数字和一个新行。我尝试使用替换来摆脱新线路,但它始终在那里。如果我将变量命令直接输入到PowerShell窗口,然后打印出变量的内容,我只得到版本号,没有新行。如果我从同一个PowerShell窗口运行脚本,我什么也得不到。

enter image description here

对此有任何帮助将不胜感激!我不必使用这种方法,任何方法来检查powershell版本并运行基于版本的功能都是我正在寻找的。

2 个答案:

答案 0 :(得分:7)

除了@ MathiasRJesson关于将函数移动到它们之前的评论之外,您还要为$PSversion变量分配一个scriptblock。它没有评估它。

此:

$PSversion = {$PSVersionTable.PSVersion | sort-object major | ForEach-Object     {$_.major}}

应该是:

$PSversion = $PSVersionTable.PSVersion | sort-object major | ForEach-Object     {$_.major}

或者可能只是:

$PSversion = $PSVersionTable.PSVersion.Major

答案 1 :(得分:0)

# Getting the whole Powershell version
$version = (Get-Host | Select-Object Version).Version

# Only the major one
$majvers = $version.Major

# The full version number (as a string)
$verstr = $version.toString()