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

PowerShell脚本If判断字符串匹配失效问题求助

PowerShell字符串匹配问题排查方案

核心排查方向:区域文化差异与不可见字符

虽然日志显示两个值都是"Wed",但Get-Date -Format "ddd"的输出受系统区域文化设置影响,或存在肉眼不可见的隐藏字符,导致字符串实际不匹配。

具体排查与修复步骤

  • 验证原始字节一致性:通过十六进制查看确认两个字符串的实际内容是否完全一致
# 查看$Today的原始字节
$Today | Format-Hex
# 查看目标字符串的原始字节
"Wed" | Format-Hex

对比输出的字节序列,若不一致则说明存在编码或隐藏字符问题。

  • 强制固定文化格式获取星期:避免系统区域影响,指定用英文文化获取标准缩写
# 强制使用英文(美国)文化获取星期缩写
$usCulture = [System.Globalization.CultureInfo]::GetCultureInfo("en-US")
$Today = (Get-Date).ToString("ddd", $usCulture)
  • 清理字符串中的干扰字符:若存在空白、零宽空格等不可见字符,用以下方式清理
# 去除首尾空白
$Today = $Today.Trim()
$str_SwitchDay = $str_SwitchDay.Trim()

# 或移除所有非字母字符
$Today = $Today -replace '[^a-zA-Z]', ''
$str_SwitchDay = $str_SwitchDay -replace '[^a-zA-Z]', ''
  • 修正$Counter递增逻辑:原脚本中$Counter = [int]$Counter++存在逻辑错误,后置递增会先返回原值再递增,正确写法为:
$Counter++
if ($Counter -ge 5) {
    $Counter = 1
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:12