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

PowerShell遍历CSV文件时if语句仅执行if分支不进入else分支求助

排查结论

你的脚本存在两处核心错误,是导致永远触发if分支的原因:

  • 第一处:相等比较运算符误用
    PowerShell中=是赋值运算符,不是比较运算符。你写的$row.operation = "add"逻辑是把字符串add赋值给$row的operation属性,赋值操作的返回值永远是非空的真值,所以if判断永远成立,不会进入else分支。
    正确的相等判断应该使用-eq运算符,判断语句改为If ($row.operation -eq "add")即可。
  • 第二处:管道语法逻辑错误
    你在Import-Csv语句后直接通过管道接Select-Object,但是没有把筛选后的结果赋值给$members变量,筛选后的结果会直接输出到控制台被丢弃,$members实际存储的是未做列筛选的原始CSV数据,虽然此处不影响operation属性的读取,但属于语法错误,修正方式有两种:
    1. 把筛选结果赋值给变量:$members = import-csv membership.csv | select-object "id","group","operation"
    2. 直接通过管道遍历,不需要单独赋值变量,示例见下方修正代码。

修正后的完整代码

# 方式1:先赋值变量再遍历
$members = Import-Csv membership.csv | Select-Object "id","group","operation"
foreach ($row in $members) {
    if ($row.operation -eq "add") {
        Write-Host "This is IF statement"
    }
    else {
        Write-Host "This is ELSE statement"
    }
}

# 方式2:直接管道遍历(不需要额外赋值变量)
Import-Csv membership.csv | Select-Object "id","group","operation" | ForEach-Object {
    if ($_.operation -eq "add") {
        Write-Host "This is IF statement"
    }
    else {
        Write-Host "This is ELSE statement"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:01