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
相关产品推荐
相关产品推荐

