当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 删除文档库中的所有文件

作者:精品下载站 日期:2024-12-14 15:01:27 浏览:15 分类:玩电脑

SharePoint Online:使用 PowerShell 删除文档库中的所有文件


要求:删除 SharePoint Online 库中的所有文档。

如何删除 SharePoint Online 库中的所有文档?

在 SharePoint Online 中,您有时可能需要删除文档库中的所有文件。例如,如果您要将大量文档导入到库中或者要清理旧文件。让我们看看如何快速删除库中的所有文档。

提示:您还可以使用资源管理器视图删除多个文件!转到库 >> 单击库功能区选项卡中的“使用资源管理器打开”选项。选择并删除文件!

只需单击几下,您就可以从 SharePoint Online 文档库中删除多个文件、文件夹和子文件夹:

  1. 在浏览器中导航到 SharePoint Online 文档库,将鼠标悬停在标题上,然后单击复选标记以选择所有文件。

    [玩转系统] SharePoint Online:使用 PowerShell 删除文档库中的所有文件

  2. 单击顶部链接栏上的“删除”按钮。
  3. 在删除对话框中,单击“删除”按钮确认删除操作。

    [玩转系统] SharePoint Online:使用 PowerShell 删除文档库中的所有文件

  4. 您会发现文档库的顶部出现一个小状态框,告诉您该项目已被删除。

    [玩转系统] SharePoint Online:使用 PowerShell 删除文档库中的所有文件

从文档库中删除所有项目后,列表视图将更新,删除的文件将移至 SharePoint 网站的回收站。

请注意,在从库中删除文件之前,您必须确保其他用户没有签出任何文件。否则,您可能会收到“文件已签出或锁定”错误。这是关于从 SharePoint Online 库检入所有文件的另一篇文章:SharePoint Online:使用 PowerShell 批量检入所有检出文件

[玩转系统] SharePoint Online:使用 PowerShell 删除文档库中的所有文件

您是否厌倦了在 SharePoint Online 中手动删除文件?有时,您可能想一次删除多个文档。虽然这可能是一项耗时的任务,但这里有一个 PowerShell 脚本可以自动执行该过程。

SharePoint Online:使用 PowerShell 删除文档库中的所有文件

您是否知道可以使用 PowerShell 删除 SharePoint Online 文档库中的所有文件?如果您想在移动或删除库之前清理它,这会很有用。本文将向您展示如何使用 PowerShell 执行此操作。此 PowerShell 脚本会删除给定库中的所有文件 - 而不删除其中的任何文件夹!


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Function to Delete all files from a given Folder
Function Delete-AllFilesFromFolder([Microsoft.SharePoint.Client.Folder]$Folder)
{
    Try {
        #Get All Files from the Folder
        $Ctx = $Folder.Context
        $Files = $Folder.Files
        $Ctx.Load($Files)
        $Ctx.ExecuteQuery()

        #Iterate through each File in the Root folder
        Foreach($File in $Files)
        {
            #Delete the file
            $Folder.Files.GetByUrl($File.ServerRelativeUrl).Recycle() | Out-Null
            Write-host -f Green "Deleted File '$($File.Name)' from '$($File.ServerRelativeURL)'"
        }
        $Ctx.ExecuteQuery()

        #Process all Sub Folders of the given folder
        $SubFolders = $Folder.Folders
        $Ctx.Load($SubFolders)
        $Ctx.ExecuteQuery()
        Foreach($Folder in $SubFolders)
        {
            #Exclude "Forms" and Hidden folders
            If( ($Folder.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_"))))
            {
                #Call the function recursively
                Delete-AllFilesFromFolder -Folder $Folder
            }
        }
    }
    Catch {
    write-host -f Red "Error:" $_.Exception.Message
    }
}

#Variables for Processing
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$LibraryRelativeURL = "/sites/Marketing/Shared Documents"

#Get Credentials to connect
$Cred = Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials

#Get the Root Folder of the Library
$RootFolder=$Ctx.Web.GetFolderByServerRelativeUrl($LibraryRelativeURL)
$Ctx.Load($RootFolder)

#Call the function to delete all Files from a Folder
Delete-AllFilesFromFolder -Folder $RootFolder 

请注意,这些脚本使用“回收”方法将文件发送到回收站。您可以使用“DeleteObject”方法永久删除文件!

使用 PowerShell 删除 SharePoint Online 文档库中的所有文件和文件夹

如果要删除库中的所有文件和子文件夹,请使用以下批量删除脚本:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Variables for Processing
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$LibraryRelativeURL = "/Sites/Marketing/Shared Documents"

Try {
    #Get Credentials to connect
    $Cred = Get-Credential
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = $Credentials

    #Get the Library and Files
    $Folder=$Ctx.Web.GetFolderByServerRelativeUrl($LibraryRelativeURL)
    $Ctx.Load($Folder)
    $Files = $Folder.Files
    $Ctx.Load($Files)
    $Ctx.ExecuteQuery()

    #Iterate through each File in the Root folder
    Foreach($File in $Files)
    {
        #Delete the file
        $Folder.Files.GetByUrl($File.ServerRelativeUrl).Recycle() | Out-Null
        Write-host -f Green "Deleted File '$($File.Name)' from '$($File.ServerRelativeURL)'"
    }
    $Ctx.ExecuteQuery()

    #Process all Sub Folders
    $SubFolders = $Folder.Folders
    $Ctx.Load($SubFolders)
    $Ctx.ExecuteQuery()
    Foreach($SubFolder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If( ($SubFolder.Name -ne "Forms") -and (-Not($SubFolder.Name.StartsWith("_"))))
        {
            #Delete the folder
            $Folder.Folders.GetByUrl($SubFolder.ServerRelativeUrl).Recycle()| Out-Null
            Write-host -f Green "Deleted Folder '$($SubFolder.Name)' from '$($SubFolder.ServerRelativeUrl)'"
        }
        $Ctx.ExecuteQuery()
    }
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}

如果要删除特定文件,请使用:使用 PowerShell 删除 SharePoint Online 中的文件

PnP PowerShell 删除 SharePoint Online 文档库中的所有文件

如何批量删除 SharePoint Online 中的文件?那么,此 PowerShell 脚本会删除给定文档库的所有文件夹和子文件夹中的所有文件。 (不要删除文件夹,顺便说一句!)


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/icdocs"
$ListName = "Images"

#Connect to the Site
Connect-PnPOnline -URL $SiteURL -Interactive

#Get the web & document Library
$Web = Get-PnPWeb
$List = Get-PnPList -Identity $ListName

#Function to delete all items in a folder - and sub-folders recursively
Function Delete-AllFilesFromFolder($Folder)
{
    #Get the site relative path of the Folder
    If($Folder.Context.web.ServerRelativeURL -eq "/")
    {
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl
    }
    Else
    {        
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl.Replace($Folder.Context.web.ServerRelativeURL,[string]::Empty)
    }

    #Get All files in the folder
    $Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType File
    
    #Delete all files
    ForEach ($File in $Files)
    {
        Write-Host ("Deleting File: '{0}' at '{1}'" -f $File.Name, $File.ServerRelativeURL)
        
        #Delete Item
        Remove-PnPFile -ServerRelativeUrl $File.ServerRelativeURL -Force -Recycle
    }

    #Process all Sub-Folders
    $SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder
    Foreach($Folder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If( ($Folder.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_"))))
        {
            #Call the function recursively
            Delete-AllFilesFromFolder -Folder $Folder
        }
    }
}

#Get the Root Folder of the Document Library and call the function
Delete-AllFilesFromFolder -Folder $List.RootFolder

我们还可以使用 Move-PnPListItemToRecycleBin cmdlet 删除文件并将其发送到回收站。


#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$LibraryName = "Project Documents"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get All Files from the document library - Exclude Folder Objects
$Files = Get-PnPListItem -List $LibraryName -PageSize 1000 | Where {$_["FileLeafRef"] -like "*.*"}

#Loop through each File
Write-host -f Green "Number of Files Found:"$Files.Count
ForEach($File in $Files)
{  
    Write-Host ("Deleting File '{0}' at {1}" -f $File["FileLeafRef"], $File["FileRef"])
    #Send File
    Move-PnPListItemToRecycleBin -List $LibraryName -Identity $File.Id -Force
}

使用 PnP PowerShell 清空 SharePoint Online 文档库

通过删除文档库中的所有文件、文件夹和子文件夹来清空文档库怎么样?


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$LibraryName = "Documents"
 
#Connect to the Site
Connect-PnPOnline -URL $SiteURL -Interactive
 
#Get the web & Root folder of the library
$Web = Get-PnPWeb
$Library = Get-PnPList -Identity $LibraryName -Includes RootFolder
$RootFolder = $Library.RootFolder

#Function to delete all Files and sub-folders from a Folder
Function Empty-PnPFolder($Folder)
{
    #Get the site relative path of the Folder
    If($Folder.Context.web.ServerRelativeURL -eq "/")
    {
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl
    }
    Else
    {        
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl.Replace($Folder.Context.web.ServerRelativeURL,[string]::Empty)
    }
 
    #Delete all files in the Folder
    $Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType File
    ForEach ($File in $Files)
    {
        #Delete File
        Remove-PnPFile -ServerRelativeUrl $File.ServerRelativeURL -Force -Recycle
        Write-Host -f Green ("Deleted File: '{0}' at '{1}'" -f $File.Name, $File.ServerRelativeURL)       
    }
 
    #Process all Sub-Folders
    $SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder
    Foreach($SubFolder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If(($SubFolder.Name -ne "Forms") -and (-Not($SubFolder.Name.StartsWith("_"))))
        {
            #Call the function recursively
            Empty-PnPFolder -Folder $SubFolder
 
            #Delete the folder
            $ParentFolderURL = $FolderSiteRelativeURL.TrimStart("/")
            Remove-PnPFolder -Name $SubFolder.Name -Folder $ParentFolderURL -Force -Recycle
            Write-Host -f Green ("Deleted Folder: '{0}' at '{1}'" -f $SubFolder.Name, $SubFolder.ServerRelativeURL)
        }
    }
}
 
#Call the function to empty document library
Empty-PnPFolder -Folder $RootFolder

虽然上述脚本对于文件


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Inventory"
$ListName = "Archive"

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
    $List =  Get-PnPList $ListName
    $ItemCount =  $List.ItemCount
    If($ItemCount -eq 0) { Write-host "Document Library is Already Empty!" -f Yellow; Break}

    #Get All Items from the Library
    $global:counter = 0
    $ListItems = Get-PnPListItem -List $ListName -PageSize 500 -Fields ID -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete `
            ($global:Counter / $ItemCount * 100) -Activity "Getting Items from List" -Status "Getting Items $global:Counter of $($ItemCount)"}
    Write-Progress -Activity "Completed Getting Items from Library $($List.Title)" -Completed

    #Sort List Items based on Server Relative URL - Descending
    $SortedItems = $ListItems | Select-Object @{Name="ServerRelativeURL";Expression={$_.FieldValues.FileRef}}, ID | Sort-Object -Descending -Property ServerRelativeURL
    
    #Delete List Items in the Batch
    $Batch = New-PnPBatch
    ForEach ($Item in $SortedItems)
    {
        Remove-PnPListItem -List $ListName -Identity $Item.ID -Recycle -Batch $Batch
        #Write-host "Deleted Item:"$Item.ServerRelativeURL
    }
    Invoke-PnPBatch -Batch $Batch -Details

    Write-host -f Green "All Items in the Library deleted Successfully!"
 }
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

从文档库中删除所有项目的更快方法

虽然上述方法效果很好,但从较大的库中删除所有项目需要花费大量时间。因此,这里是 ScriptBlock PowerShell 命令,可以更快地批量删除项目。


$SiteURL = "https://crescent.sharepoint.com/sites/papers"
$ListName = "Preservation Hold Library"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

Get-PnPList -Identity $ListName | Get-PnPListItem -PageSize 100 -ScriptBlock {
    Param($items) Invoke-PnPQuery } | ForEach-Object { $_.Recycle() | Out-Null
}

该脚本将从给定文档库中删除所有文件和文件夹!要删除文档库,请使用:如何使用 PowerShell 删除 SharePoint Online 中的文档库?

总之,从 SharePoint Online 文档库中删除所有文件可能是一个具有挑战性且耗时的过程。然而,使用 PowerShell 可以使这个过程更加高效和直接。使用本指南中提供的脚本,您只需几个步骤即可轻松删除 SharePoint Online 文档库中的所有文件。

经常问的问题:

已删除的文件可以从 SharePoint Online 中永久删除吗?

SharePoint Online 中已删除的文件会保留一段时间(通常为 93 天),然后才会被永久删除。从网站回收站删除的项目将移至网站集回收站,网站集管理员可以在其中还原它们。如果某个项目从网站集回收站中删除或超过保留时间,则该项目将被永久删除!

已删除的文件在 SharePoint Online 中保留多长时间?

SharePoint Online 中已删除的文件从其原始位置删除后将保留 93 天。从 SharePoint Online 网站中删除文件后,该文件会进入网站回收站,并在其中保留 93 天,除非有人将其删除或清空回收站。如果文件在 93 天内从网站回收站(或第一阶段回收站)中删除,它将进入网站集回收站(或第二阶段回收站)。两级回收站合计保留期为 93 天后,已删除的文件将被永久删除且无法恢复。

如何删除 SharePoint Online 中的库模板?

假设您具有编辑权限,您可以通过单击“设置”齿轮,选择“站点信息”,然后单击“站点设置”来删除任何文档库或列表模板。现在,单击图库下的列表模板,查找,然后删除您想要的模板!或者,您可以使用 PowerShell 删除 SharePoint Online 中的文档库模板

如何从 SharePoint 列表中删除所有项目?

要从 SharePoint 列表中删除所有项目,您可以使用“在网格视图中编辑”或“快速编辑”视图来选择所有项目,然后批量删除它们。或者,您可以使用 PowerShell 命令删除列表中的所有项目。

如何在 SharePoint 中删除多个版本的文档?

若要删除 SharePoint Online 中文档的多个版本,请转到文档库并选择要删除其版本的文件。然后,右键单击该文件并选择“版本历史记录”。从那里,您可以通过单击“删除所有版本”来删除文档的所有先前版本。或者,您可以使用 PowerShell 删除 SharePoint Online 中文档的所有早期版本。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯