SharePoint Online PowerShell按日期删除项报错求助
兄弟,我一眼就揪出你脚本里的问题啦!你碰到的这个错误提示Method invocation failed because [System.Int32] does not contain a method named 'DeleteObject',核心原因很简单:你找错了调用DeleteObject()方法的对象!
你写的$item["ID"].DeleteObject()这行代码,是在列表项的ID属性上调用删除方法——但$item["ID"]返回的是一个System.Int32类型的整数,它根本没有DeleteObject()这个方法。正确的做法是直接在列表项对象本身(也就是$item)上调用这个方法。
修正后的脚本片段
foreach($item in $items) { $created = $item["Created"] if ($created -lt $days) { Write-Host "Title - " $item["Title"] "Created - " $item["Created"] $test = $item["ID"] write-host $test $item.DeleteObject() # 这里修正了调用对象 } } $context.ExecuteQuery()
额外提醒几个关键点
- 确认
$items是通过ClientContext正确获取的列表项集合,并且你已经加载了Created、Title、ID这些需要用到的属性(比如用$context.Load($items, 'Include(Created, Title, ID)')) - 确保
$days是一个DateTime类型的对象,比如你可能是这样定义的:$days = (Get-Date).AddDays(-30),这样和$item["Created"](DateTime类型)比较才不会有类型不匹配的问题 DeleteObject()只是在本地标记要删除的列表项,只有执行$context.ExecuteQuery()之后,这些删除操作才会真正同步到SharePoint Online上
内容的提问来源于stack exchange,提问作者joshua maniquiz
相关产品推荐
相关产品推荐

