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

PnP PowerShell更新SharePoint列表项时Set-PnPListItem报错求助

问题解决

错误原因

  • 错误1:Get-PnPListItem的-Id参数仅支持传入整数类型的单条列表项ID,不支持通配符*,你试图用-Id *获取所有列表项的写法不符合cmdlet参数要求。
  • 错误2:你获取列表项后直接提取了.FieldValues(字段值字典集合)赋值给$ListData,遍历得到的$Item是键值对字典对象,没有内置的Id属性,所以$Item.Id为空,导致Set-PnPListItem无法识别要更新的条目。

修正后的代码

#Parameters
$SiteUrl = "https://domain.sharepoint.com/sites/site"
$ListName = "list"
$ListGUID = "5527e75b-40c1-4a89-90a7-035e06f56457"

#Connect to site
Connect-PnPOnline $SiteUrl -Interactive

#Get the List contents:保留完整ListItem对象,不要直接取FieldValues
$ListData = Get-PnPListItem -List $ListName

#Iterate through each list item
ForEach ($Item in $ListData)
{
    Write-Host "Checking Item ID: $($Item.Id)"
    
    $C2T = $False
    # 字段值从FieldValues属性中读取
    If($null -ne $Item.FieldValues."tst_x002f_pg")
    {
        $C2T = $True
    }
    # 布尔值不需要加引号,直接传变量即可
    Set-PnPListItem -List $ListGUID -Identity $Item.Id -Values @{"tst_x002f_yn" = $C2T}
}

额外优化说明

如果列表数据量超过5000条,需要给Get-PnPListItem加上-PageSize 2000参数开启分页查询,避免触发列表阈值限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:04