假设我需要一个 WQL 查询来查找运行 Windows 8 或更高版本的客户端:
WQL 查询 Windows 8 或更高版本
SELECT Version FROM Win32_OperatingSystem WHERE Version >= '6.2'
你不会冒这个还包括版本 6.10 的风险(假设将来在 7.0 版本的 Windows 之前会有 6.10)?这不就是一个简单的字符串比较操作吗?
编写此查询以获得“预期”结果的最简洁方法是什么。
用小数点拆分版本号,然后在 where 子句中按两部分过滤
如果你可以检查Win32_OperatingSystem那么你会发现那Version
是字符串数据类型。所以不可能在上面应用比较运算符。您可以在变量中选择它进行字符串操作或将其转换为浮点数据类型。
一位同事向我提供了我非常喜欢的建议。与其尝试查询未知,不如过滤掉不正确的版本。确实没有很多不兼容的Windows版本。这将使查询看起来像:
SELECT Version FROM Win32_OperatingSystem
WHERE NOT Version like "[12345].%"
and NOT Version like "6.0.%"
and NOT Version like "6.1.%"