You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将DeviceTvmSoftwareInventory中字符串版本转为整数失败求助

解决DeviceTvmSoftwareInventory中软件版本字符串比较的问题

问题原因

OpenSSL的版本号(如1.1.1k、3.0.7)包含小数点和字母后缀,toint()仅能转换纯整数格式的字符串,因此直接转换后所有值为null。

解决方案1:使用parse_version()函数(推荐)

KQL提供了parse_version()函数,专门用于解析标准版本字符串并生成可直接比较的版本对象:

DeviceTvmSoftwareInventory
    | where SoftwareVendor == "openssl"
    | extend parsed_ver = parse_version(SoftwareVersion)
    | project DeviceId, DeviceName, SoftwareVendor, SoftwareVersion, parsed_ver
    | where parsed_ver < parse_version("1.1.1m") // 示例:筛选版本低于1.1.1m的设备

该函数支持带小数点、字母后缀的常见版本格式,解析后可直接使用<、>、==等运算符进行版本比较。

解决方案2:拆分版本字段手动比较

若环境不支持parse_version(),可通过parse运算符拆分版本号的各个部分为整数,按层级比较:

DeviceTvmSoftwareInventory
    | where SoftwareVendor == "openssl"
    | parse SoftwareVersion with major:int "." minor:int "." patch:int suffix:string // 根据实际版本格式调整拆分规则
    | project DeviceId, DeviceName, SoftwareVendor, SoftwareVersion, major, minor, patch
    | where major < 1 
       or (major == 1 and minor < 1) 
       or (major == 1 and minor == 1 and patch < 13) // 示例:筛选版本低于1.1.13的设备

如果版本号包含字母后缀(如1.1.1k),可额外添加逻辑将后缀转换为对应数字(如a=1、b=2...)后参与比较。

内容的提问来源于stack exchange,提问作者Sean Vucich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:20:35