ค้นหาเว็บไซต์

SharePoint Online: ลบไฟล์ทั้งหมดในไลบรารีเอกสารโดยใช้ PowerShell


ความต้องการ: ลบเอกสารทั้งหมดในไลบรารีใน SharePoint Online

จะลบเอกสารทั้งหมดในไลบรารีใน SharePoint Online ได้อย่างไร

ใน SharePoint Online คุณอาจต้องลบไฟล์ทั้งหมดในไลบรารีเอกสารเป็นครั้งคราว ตัวอย่างเช่น หากคุณกำลังนำเข้าเอกสารจำนวนมากไปยังไลบรารี หรือหากคุณกำลังล้างไฟล์เก่า มาดูกันว่าคุณสามารถลบเอกสารทั้งหมดในไลบรารีได้อย่างรวดเร็วได้อย่างไร

เคล็ดลับ: คุณยังสามารถใช้มุมมอง Explorer เพื่อลบหลายไฟล์ได้! ไปที่ห้องสมุด >> คลิกที่ตัวเลือก “เปิดด้วย Explorer” จากแท็บ Ribbon ของห้องสมุด เลือกและลบไฟล์!

คุณสามารถลบไฟล์ โฟลเดอร์ และโฟลเดอร์ย่อยหลายรายการออกจากไลบรารีเอกสาร SharePoint Online ได้ด้วยการคลิกเพียงไม่กี่ครั้ง:

  1. นำทางไปยังไลบรารีเอกสาร SharePoint Online ของคุณในเบราว์เซอร์ โฮเวอร์เหนือส่วนหัว แล้วคลิกเครื่องหมายถูกเพื่อเลือกไฟล์ทั้งหมด

  2. คลิกที่ปุ่ม "ลบ" บนแถบลิงก์ด้านบน
  3. ในกล่องโต้ตอบ Delete ให้ยืนยันการดำเนินการลบโดยคลิกปุ่ม "ลบ"

  4. คุณจะพบกล่องสถานะเล็กๆ ปรากฏขึ้นที่ด้านบนสุดของไลบรารีเอกสาร โดยแจ้งให้คุณทราบว่ารายการดังกล่าวถูกลบไปแล้ว

เมื่อรายการทั้งหมดถูกลบออกจากไลบรารีเอกสาร มุมมองรายการจะได้รับการอัปเดต และไฟล์ที่ถูกลบจะถูกย้ายไปยังถังรีไซเคิลของไซต์ SharePoint

โปรดทราบว่าคุณต้องตรวจสอบให้แน่ใจว่าไม่มีไฟล์ใดถูกเช็คเอาท์ให้กับผู้ใช้รายอื่นก่อนที่จะลบออกจากไลบรารี มิฉะนั้น คุณอาจได้รับข้อผิดพลาด “ไฟล์ถูกเช็คเอาท์หรือล็อค” นี่เป็นอีกโพสต์เกี่ยวกับการตรวจสอบไฟล์ทั้งหมดจากไลบรารี SharePoint Online: 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\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\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\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\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
}

ถ้าคุณต้องการลบไฟล์ใดไฟล์หนึ่ง ให้ใช้: ลบไฟล์ใน SharePoint Online โดยใช้ PowerShell

PnP PowerShell เพื่อลบไฟล์ทั้งหมดในไลบรารีเอกสาร SharePoint Online

ฉันจะลบไฟล์จำนวนมากใน SharePoint Online ได้อย่างไร สคริปต์ PowerShell นี้จะลบไฟล์ทั้งหมดออกจากโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมดของไลบรารีเอกสารที่กำหนด (อย่าลบโฟลเดอร์ BTW!)


#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
}

ล้างไลบรารีเอกสาร SharePoint Online โดยใช้ PnP PowerShell

ลองล้างไลบรารีเอกสารโดยการลบไฟล์ โฟลเดอร์ และโฟลเดอร์ย่อยทั้งหมดออกจากไลบรารีนั้นดูไหม


#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

แม้ว่าสคริปต์ด้านบนจะทำงานได้ดีอย่างสมบูรณ์แบบกับไลบรารีขนาดเล็กที่มีไฟล์ < 5,000 ไฟล์ แต่บนไลบรารีที่ใหญ่กว่าจะได้รับ "Get-PnPFolderItem : การดำเนินการที่พยายามถูกห้ามเนื่องจากเกินเกณฑ์การดูรายการ" เกิดข้อผิดพลาดเนื่องจาก Get-PnPFolderItem ไม่สามารถจัดการรายการและไลบรารีขนาดใหญ่ได้ ต่อไปนี้เป็นสคริปต์ทางเลือกในการล้างไลบรารีเอกสารโดยการลบไฟล์และโฟลเดอร์ทั้งหมดในไลบรารีได้เร็วขึ้นด้วยวิธี PnP Batch:


#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
}

สคริปต์นี้จะลบไฟล์และโฟลเดอร์ทั้งหมดออกจากไลบรารีเอกสารที่กำหนด! หากต้องการลบไลบรารีเอกสาร ให้ใช้: วิธีลบไลบรารีเอกสารใน SharePoint Online โดยใช้ PowerShell

โดยสรุป การลบไฟล์ทั้งหมดออกจากไลบรารีเอกสาร SharePoint Online อาจเป็นกระบวนการที่ท้าทายและใช้เวลานาน อย่างไรก็ตาม การใช้ PowerShell สามารถทำให้กระบวนการนี้มีประสิทธิภาพและตรงไปตรงมามากขึ้น ด้วยสคริปต์ที่ให้ไว้ในคู่มือนี้ คุณสามารถลบไฟล์ทั้งหมดในไลบรารีเอกสาร SharePoint Online ได้อย่างง่ายดายในไม่กี่ขั้นตอน

คำถามที่พบบ่อย:

ไฟล์ที่ถูกลบสามารถนำออกจาก SharePoint Online อย่างถาวรได้หรือไม่

ไฟล์ที่ถูกลบใน SharePoint Online จะถูกเก็บรักษาไว้ในช่วงระยะเวลาหนึ่ง (โดยปกติคือ 93 วัน) ก่อนที่จะถูกลบอย่างถาวร รายการที่ถูกลบออกจากถังรีไซเคิลของไซต์จะถูกย้ายไปยังถังรีไซเคิลของไซต์คอลเลกชัน ซึ่งผู้ดูแลไซต์คอลเลกชันสามารถคืนค่ารายการเหล่านั้นได้ ถ้ารายการถูกลบออกจากถังรีไซเคิลของไซต์คอลเลกชันหรือเกินเวลาการเก็บรักษา รายการนั้นจะถูกลบอย่างถาวร!

ไฟล์ที่ถูกลบจะถูกเก็บไว้ใน SharePoint Online นานเท่าใด

ไฟล์ที่ถูกลบใน SharePoint Online จะถูกเก็บไว้เป็นเวลา 93 วันหลังจากถูกลบออกจากตำแหน่งที่ตั้งเดิม เมื่อไฟล์ถูกลบออกจากไซต์ SharePoint Online ไฟล์นั้นจะเข้าไปในถังรีไซเคิลของไซต์ ซึ่งจะเก็บรักษาไว้เป็นเวลา 93 วัน เว้นแต่จะมีบุคคลอื่นลบหรือล้างถังรีไซเคิล ถ้าไฟล์ถูกลบภายใน 93 วันจากถังรีไซเคิลของไซต์ (หรือถังรีไซเคิลขั้นที่ 1) ไฟล์จะเข้าสู่ถังรีไซเคิลของไซต์คอลเลกชัน (หรือถังรีไซเคิลขั้นที่ 2) หลังจากระยะเวลาการเก็บรักษารวม 93 วันสำหรับถังรีไซเคิลทั้งสองขั้นตอน ไฟล์ที่ถูกลบจะถูกลบอย่างถาวรและไม่สามารถกู้คืนได้

ฉันจะลบเทมเพลตไลบรารีใน SharePoint Online ได้อย่างไร

สมมติว่าคุณมีสิทธิ์แก้ไข คุณสามารถลบไลบรารีเอกสารหรือเทมเพลตรายการได้โดยคลิกที่เครื่องมือการตั้งค่า เลือก "ข้อมูลไซต์" จากนั้นคลิก "การตั้งค่าไซต์" ตอนนี้ คลิกที่เทมเพลตรายการภายใต้แกลเลอรี ค้นหา จากนั้นลบเทมเพลตที่คุณต้องการ! หรือคุณสามารถใช้ PowerShell เพื่อลบเทมเพลตไลบรารีเอกสารใน SharePoint Online

ฉันจะลบรายการทั้งหมดออกจากรายการ SharePoint ได้อย่างไร

หากต้องการลบรายการทั้งหมดออกจากรายการ SharePoint คุณสามารถใช้มุมมอง "แก้ไขในมุมมองตาราง" หรือ "แก้ไขด่วน" เพื่อเลือกรายการทั้งหมดแล้วลบออกเป็นกลุ่ม หรือคุณสามารถใช้คำสั่ง PowerShell เพื่อลบรายการทั้งหมดออกจากรายการได้

ฉันจะลบเอกสารหลายเวอร์ชันใน SharePoint ได้อย่างไร

เมื่อต้องการลบเอกสารหลายเวอร์ชันใน SharePoint Online ให้ไปที่ไลบรารีเอกสารแล้วเลือกไฟล์ที่คุณต้องการลบเวอร์ชัน จากนั้นคลิกขวาที่ไฟล์แล้วเลือก "ประวัติเวอร์ชัน" จากนั้น คุณสามารถลบเอกสารเวอร์ชันก่อนหน้าทั้งหมดได้โดยคลิกที่ "ลบเวอร์ชันทั้งหมด" หรือคุณสามารถใช้ PowerShell เพื่อลบเอกสารเวอร์ชันก่อนหน้าทั้งหมดใน SharePoint Online

บทความที่เกี่ยวข้อง