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

PowerShell版本字符串相等性判断返回False的异常问题求助

PowerShell版本字符串相等性判断返回False的异常问题求助

这问题我之前也踩过坑!核心原因就是wmic命令返回的字符串里藏着你看不见的空白字符(比如回车符\r、换行符\n),虽然从控制台输出看和你手动定义的$versionString完全一样,但实际内容并不相同,这就导致了相等性判断返回False。

你可以通过以下命令验证这个差异:

# 对比两个字符串的长度
$version[2].Length
$versionString.Length

# 输出每个字符的ASCII编码,查看隐藏字符
$version[2] | ForEach-Object { [int][char]$_ }
$versionString | ForEach-Object { [int][char]$_ }

执行后你会发现,$version[2]的长度比$versionString长,而且末尾会多出13(对应回车符)和10(对应换行符)的编码,这些就是导致判断不相等的元凶。

这里给你两个解决思路:

  • 快速修复现有代码:用Trim()方法去掉字符串前后的所有空白字符,包括隐藏的换行/回车:
$version[2].Trim() -eq $versionString

这样就能得到正确的True结果了。

  • 更优雅的替代方案:放弃wmic,改用PowerShell原生的Get-CimInstance命令获取产品信息,它返回的是干净的字符串,不会有多余的空白问题:
# 直接获取目标产品的版本字符串
$version = (Get-CimInstance Win32_Product | Where-Object { $_.Caption -like '*Citrix Workspace Inside*' }).Version
# 直接进行相等性判断
$version -eq $versionString

另外补充一句:虽然GetType()显示两者都是String类型,但类型相同不代表内容完全一致——那些隐藏的空白字符也是字符串的一部分,自然会让相等性判断失败。

备注:内容来源于stack exchange,提问作者PumpkinBreath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:03:04