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

两个看似相同的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比较必然不相等。
  • 修正步骤:
    1. 提取Select-String匹配到的纯文本内容:
      $lastupdated = (invoke-webrequest -uri $source | Out-String -Stream | Select-String Last-Modified).Line
      
    2. 标准化本地文件读取的内容,去除多余空白和换行:
      $storeddate = (get-content C:\windows\file.txt -Raw).Trim()
      
    3. 若内容是日期格式,更可靠的方式是转换为DateTime对象再比较,避免字符串格式细微差异(如空格、时区标识)导致的误判:
      # 提取并转换日期部分
      $lastUpdatedDate = [DateTime]::Parse($lastupdated -replace 'Last-Modified: ', '')
      $storedDateObj = [DateTime]::Parse($storeddate)
      
      # 执行比较
      $lastUpdatedDate -eq $storedDateObj
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:52:37