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

PowerShell多重ForEach循环与IF语句运行报错原因及解决方法

故障根本原因

脚本报错和你写了多个ForEach/IF语句没有关联,核心问题是引号字符不兼容:你代码中包裹字段名使用的是中文全角双引号“”,而PowerShell解析器仅支持识别英文半角双引号",全角引号被识别为无效乱码,才触发了一系列语法解析错误,报错信息中的“就是全角引号解码错误的特征标识。

修复方案

将脚本中所有全角双引号替换为英文半角双引号即可正常运行,同时可以将两次列表遍历合并为一次,提升执行效率,修复后的完整代码如下:

# 提前配置变量
$ListName = "替换为你的实际SharePoint列表名"
$date = Get-Date "202X-XX-XX" # 替换为你需要匹配的实际日期

# 获取SharePoint列表内容
$listItems= (Get-PnPListItem -List $ListName -Fields "Title","InquestTwoDate", "InquestThreeDate" -PageSize 1000) 

# 单次遍历处理两个字段的判断
ForEach ($listItem in $listItems)
{
    # 第一个独立IF:处理InquestTwoDate字段
    If($listItem["InquestTwoDate"] -eq $date)
    {    
        Set-PnPListItem -List $ListName -Identity $listItem -Values @{"InquestTwoDate"=$null}
    }

    # 第二个独立IF:处理InquestThreeDate字段,两个判断互相独立互不影响
    If($listItem["InquestThreeDate"] -eq $date)
    {    
        Set-PnPListItem -List $ListName -Identity $listItem -Values @{"InquestThreeDate"=$null}
    }
}

优化提示:原代码中-eq "$date"将日期变量强制转为字符串,可能因日期格式不匹配导致判断失效,直接使用-eq $date匹配日期类型数据更稳妥。

单脚本多独立IF语句编写规则

你可以在同一个脚本内编写任意数量带执行动作的独立IF语句,只要满足以下基础规则即可正常运行:

  • 每个IF的判断条件用英文半角括号()包裹
  • 每个IF对应的执行逻辑用英文半角大括号{}包裹
  • 多个IF语句按执行顺序依次编写即可,无需额外连接符
  • 所有代码符号均使用英文半角格式,避免编码解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:04