两个看似相同的PowerShell字符串不相等?求原因及更佳比较运算符
字符串比较问题排查

问题
我正在排查为何以下两个字符串不相等,是否存在更合适的比较运算符?
相关代码
$lastupdated = invoke-webrequest -uri $source | Out-String -Stream | Select-String Last-Modified $storeddate = get-content C:\windows\file.txt
问题原因与解决方法
- 核心问题:
Select-String返回的是MatchInfo对象,并非纯字符串,直接和Get-Content返回的字符串用-eq比较必然不相等。 - 修正步骤:
- 提取
Select-String匹配到的纯文本内容:$lastupdated = (invoke-webrequest -uri $source | Out-String -Stream | Select-String Last-Modified).Line - 标准化本地文件读取的内容,去除多余空白和换行:
$storeddate = (get-content C:\windows\file.txt -Raw).Trim() - 若内容是日期格式,更可靠的方式是转换为
DateTime对象再比较,避免字符串格式细微差异(如空格、时区标识)导致的误判:# 提取并转换日期部分 $lastUpdatedDate = [DateTime]::Parse($lastupdated -replace 'Last-Modified: ', '') $storedDateObj = [DateTime]::Parse($storeddate) # 执行比较 $lastUpdatedDate -eq $storedDateObj
- 提取
内容的提问来源于stack exchange,提问作者SophisticatedBear
相关产品推荐
相关产品推荐

