如何解决CSOM PowerShell 从 SharePoint 中删除多个文件
我的 PowerShell 脚本循环遍历目录中的每个文件,如果文件丢失/已更改,则将其上传到 SharePoint Online。一切正常,现在我想从 SharePoint 中删除无关文件以获得真正的同步功能。正如用户在其他 post 中提到的,我在尝试使用 DeleteObject() 后收到此错误:
The collection was modified. Enumeration operation may not execute.
这是我的代码:
$List = $Context.Web.Lists.GetByTitle($library)
$ListItems = $List.GetItems($Query)
$Context.Load($ListItems)
$Context.ExecuteQuery()
$SPfiles = @()
#Iterate through each document in the library
ForEach($ListItem in $ListItems) {
$Data = New-Object -TypeName PSObject -Property ([Ordered] @{
FileName = $ListItem.FieldValues["FileLeafRef"]
})
if ( -not(Test-Path -Path "$local_dir\$($Data.FileName)")) {
$ListItem.DeleteObject()
$Context.ExecuteQuery()
Continue
}
$SPfiles += $Data
}
如何删除 SharePoint 文件(最好在此循环中),或者我是否必须在每次 DeleteObject() 调用后编写另一个循环并查询/执行 $ListItems 变量?
解决方法
不要使用 foreach
循环删除项目,而是使用 for
循环。
for ($i = $ListItems.Count-1; i >= 0; i--){
$ListItems[i].DeleteObject()
$Context.ExecuteQuery()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。