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

Bru*_*rum 3 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"
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

Bac*_*its 7

除了@ MathiasRJesson关于在使用函数之前将函数移动到其中的注释之外,您还要为$PSversion变量分配一个scriptblock .它没有评估它.

这个:

$PSversion = {$PSVersionTable.PSVersion | sort-object major | ForEach-Object     {$_.major}}
Run Code Online (Sandbox Code Playgroud)

应该:

$PSversion = $PSVersionTable.PSVersion | sort-object major | ForEach-Object     {$_.major}
Run Code Online (Sandbox Code Playgroud)

或者可能只是:

$PSversion = $PSVersionTable.PSVersion.Major
Run Code Online (Sandbox Code Playgroud)