windows - 操作系统版本的 if 语句
问题描述
我没有让它工作,我真的很困惑为什么它不工作。我的操作系统版本是 10.0.14393,但它仍然显示它低于 6?这里有什么问题?
$verCheckOS = (Get-WmiObject Win32_OperatingSystem).Version
if ($verCheckOS -lt 6) {
Write-Host -ForeGroundColor Red "Version is too low, $verCheckOS"
} else {
Write-Host -ForegroundColor Green "OS version is good, $verCheckOS"
}
下面的简单数字效果很好,所以我不知道操作系统版本号是否是某种特定类型的数据类型?如何将操作系统版本号与if
语句进行比较?
$value = 10
if ($value -lt 6) {
Write-Host "Value is lower than 6"
} else {
Write-Host "Value is greater than 6"
}
解决方案
如果你对$verCheckOS
变量进行类型转换,那么会发生更有趣的事情:
[version]$verCheckOS = (Get-WmiObject win32_operatingsystem).version
运行您提供的代码时,我们收到错误消息:
if($verCheckOS -lt 6) { write-host -ForeGroundColor Red "Version is too low, $verCheckOS" }
Else { write-host -ForegroundColor Green "OS version is good, $verCheckOS" }
Could not compare "10.0.17134" to "6". Error: "Cannot convert value "6" to type "System.Version".
Error: "Version string portion was too short or too long.""
At line:1 char:8
这里发生的情况是变量$verCheckOS
现在是数据类型,并且无法将[version]
唯一整数转换为数据类型。它需要至少 2 个八位字节才能进行转换,因为数据类型表示如下:6
[version]
[version]
Major Minor Build Revision
----- ----- ----- --------
10 0 17134 -1
有很多方法可以解决这个问题,具体取决于您要比较的数字。如果您只是想比较“主要”版本八位字节,则可以比较整数与版本:
if($verCheckOS.Major -lt 6) { write-host -ForeGroundColor Red "Version is too low, $verCheckOS" }
Else { write-host -ForegroundColor Green "OS version is good, $verCheckOS" }
通过推断“主要”版本号并进行整数与整数比较,这将返回一个肯定的结果。
如果您想比较真实的“版本”,那么您需要提供与 2 个版本对象的比较,这是一个示例:
[version]$verCheckOS = (Get-WmiObject win32_operatingsystem).version
[version]$verCompare = "6.0"
if($verCheckOS -lt $verCompare) { write-host -ForeGroundColor Red "Version is too low, $verCheckOS" }
Else { write-host -ForegroundColor Green "OS version is good, $verCheckOS" }
要查看从字符串到版本的转换或尝试解析您自己的版本号,请使用[version]
.NET 类,如下所示:
[version]::new("6.0")
推荐阅读
- javascript - 如何通过在javascript中调用函数在对象内添加属性
- javascript - 如果选中其他单选按钮,请检查单选按钮
- html - 类型号不适用于小数位
- css - 在我的情况下,我必须为一行使用 5 col-md,另一个 col-md 需要在没有打开行的情况下进入下一行
- python - 如何将 dict keyx:valuex 列表转换为 dict key:keyx, value:valuex 列表?
- vue-material - 未在 Vue Material md-tabs 中列出的页面会抛出“未捕获的类型错误:无法读取属性 'parentNode' of null”
- matplotlib - 我可以反转matplotlib的pcolormesh的过程吗?
- mysql - MYSQL JOIN 3 tables where field in third tables must be 0 and nothing else
- mysql - Heroku deployment hangs on executing DB queries, then fails with Timed out running buildpack Node.js
- regex - 正则表达式获取列