我试图检查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窗口运行脚本,我什么也得不到。
对此有任何帮助将不胜感激!我不必使用这种方法,任何方法来检查powershell版本并运行基于版本的功能都是我正在寻找的。
答案 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()