SharePoint Online:使用 PowerShell 从 CSV 批量删除文件夹
要求:批量删除 SharePoint Online 中的文件夹。
如何批量删除 SharePoint Online 中的多个文件夹?
您是否曾经想要从 SharePoint Online 中批量删除多个文件夹以清理您的网站或删除过时或不需要的内容?如果是这样,您可能熟悉选择每个文件夹然后将其删除的挑战。这篇博文将向您展示如何快速删除 SharePoint Online 中的多个文件夹。
我们可以使用 CSV 文件和 PowerShell 脚本来批量删除文件夹及其子文件夹和文件:
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
$CSVFilePath = "C:\Users\Thomas\Desktop\BulkDeleteFolders.csv"
#Connect to the site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the data from CSV file
$CSVFile = Import-CSV $CSVFilePath | Sort-Object ParentFolderSiteRelativeURL -Descending
#Read CSV file and delete each folder
ForEach($Row in $CSVFile)
{
Try {
#Check if folder exists
$Folder = Get-PnPFolderItem -FolderSiteRelativeUrl $Row.ParentFolderSiteRelativeURL -ItemName $Row.FolderName #-ErrorAction SilentlyContinue
If($Folder -ne $Null)
{
#Delete the folder
Remove-PnPFolder -Name $Row.FolderName -Folder $Row.ParentFolderSiteRelativeURL -Recycle -Force
Write-host -f Green "Folder '$($Row.FolderName)' Deleted Successfully from $($Row.ParentFolderSiteRelativeURL)"
}
Else
{
Write-Host "Folder '$($Row.FolderName)' doesn't exists at $($Row.ParentFolderSiteRelativeURL)" -ForegroundColor Yellow
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
}
该脚本可让您一次删除多个文件夹,从而提高效率。如果您需要快速从站点中删除许多文件夹,这可能是一种有用的技术。这是我的 CSV 文件,其中包含文件夹名称列表及其父文件夹的站点相对 URL。
您可以从此处下载 CSV 以删除文件夹:
SharePoint Online:无法删除包含文件的文件夹?
当您的网站未置于保留保留策略之下时,上述脚本可以正常工作。但是,您必须删除该文件夹的所有文件和子文件夹,以避免出现“您必须先删除该文件夹中的所有项目才能删除该文件夹”的情况。错误信息。
SharePoint Online:用于从 CSV 文件批量删除文件夹的 PowerShell 脚本
此 PowerShell 脚本以递归方式从给定站点的 CSV 文件中删除每个文件夹及其内容(文件、子文件夹)。
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$CSVFilePath = "C:\Users\Thomas\Desktop\BulkDeleteFolders.csv"
#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 ("`tDeleted 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
Remove-PnPFolder -Name $SubFolder.Name -Folder $FolderSiteRelativeURL -Force -Recycle
Write-Host -f Green ("`tDeleted Folder: '{0}' at '{1}'" -f $SubFolder.Name, $SubFolder.ServerRelativeURL)
}
}
}
#Connect to the site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the data from CSV file
$CSVFile = Import-CSV $CSVFilePath | Sort-Object ParentFolderSiteRelativeURL -Descending
#Read CSV file and delete each folder
ForEach($Row in $CSVFile)
{
Try {
#Check if folder exists
$Folder = Get-PnPFolderItem -FolderSiteRelativeUrl $Row.ParentFolderSiteRelativeURL -ItemName $Row.FolderName #-ErrorAction SilentlyContinue
If($Folder -ne $Null)
{
Write-Host -f Yellow "Deleting Folder '$($Row.FolderName)' from $($Row.ParentFolderSiteRelativeURL)..."
#Empty the Folder
Empty-PnPFolder $Folder
#Delete the folder
Remove-PnPFolder -Name $Row.FolderName -Folder $Row.ParentFolderSiteRelativeURL -Recycle -Force
Write-host -f Green "`tFolder '$($Row.FolderName)' Deleted Successfully!"
}
Else
{
Write-Host "Folder '$($Row.FolderName)' doesn't exists at $($Row.ParentFolderSiteRelativeURL)" -ForegroundColor Yellow
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
}
此脚本首先删除所有文件和子文件夹,然后删除 SharePoint Online 中的文件夹。要从 CSV 文件批量删除文件,请使用:SharePoint Online:使用 PowerShell 从 CSV 批量删除文件
经常问的问题:
如何删除 SharePoint Online 中的文件夹?
要删除 SharePoint Online 中的文件夹,请从列表或文档库中选择该文件夹,然后单击工具栏中的“删除”按钮。您还可以右键单击该文件夹,然后从上下文菜单中选择“删除”。 PowerShell 也有助于删除 SharePoint Online 中的文件夹。
详细信息:在 SharePoint Online PowerShell 中删除文件夹
如何使用 PowerShell 删除 SharePoint Online 中的文件?
使用 CSOM 中的 $File.DeleteObject() 方法或 PnP PowerShell 中的 Remove-PnPFile cmdlet 从 SharePoint Online 删除文件。
详细信息:SharePoint Online PowerShell 删除文件
