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()
}
我的 PowerShell 脚本循环遍历目录中的每个文件,如果 missing/has 已更改,则将其上传到 SharePoint Online。一切正常,现在我想从 SharePoint 中删除无关的文件以获得真正的同步功能。正如用户在其他
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()
}