CSOM PowerShell 从 SharePoint 中删除多个文件

CSOM PowerShell delete multiple files from SharePoint

我的 PowerShell 脚本循环遍历目录中的每个文件,如果 missing/has 已更改,则将其上传到 SharePoint Online。一切正常,现在我想从 SharePoint 中删除无关的文件以获得真正的同步功能。正如用户在其他 中提到的,我在尝试使用 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() 调用后编写另一个循环和 query/execute $ListItems 变量?

不要使用 foreach 循环来删除项目,而是使用 for 循环。

for ($i = $ListItems.Count-1; i >= 0; i--){
 $ListItems[i].DeleteObject()
 $Context.ExecuteQuery()
}