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

SharePoint Online: ลบรายการที่สร้างขึ้นใน 7 วันที่ผ่านมาโดยใช้ PowerShell


ความต้องการ: ลบรายการทั้งหมดที่สร้างขึ้นภายใน 7 วันที่ผ่านมาในรายการ SharePoint Online

PowerShell เพื่อลบรายการ SharePoint Online ตามวันที่สร้าง

คุณกำลังมองหาวิธีลบรายการทั้งหมดที่สร้างขึ้นใน 7 วันที่ผ่านมาอย่างรวดเร็วหรือไม่? PowerShell สามารถช่วยได้! ในคู่มือนี้ เราจะแสดงวิธีใช้ PowerShell เพื่อลบรายการเก่าทั้งหมดของคุณ:

คุณสามารถใช้ PowerShell เพื่อลบรายการในรายการ SharePoint Online ที่สร้างขึ้นในช่วง X วันที่ผ่านมาโดยใช้สคริปต์ต่อไปนี้ สคริปต์นี้เชื่อมต่อกับไซต์ SharePoint Online และดึงข้อมูลในรายการที่ระบุโดยใช้ SharePoint Client-Side Object Model (CSOM) จากนั้นแบบสอบถาม CAML จะใช้เพื่อดึงข้อมูลเฉพาะรายการที่สร้างขึ้นภายใน X วันที่ผ่านมา สุดท้าย สคริปต์จะวนซ้ำแต่ละรายการและลบออก ซึ่งเป็นวิธีที่สะดวกและเป็นอัตโนมัติในการลบรายการเก่าๆ ในข้อมูลรายการ SharePoint ของคุณ


#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"
  
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$UserName = "Salaudeen@CrescentTech.com"
$Password = "Password Goes Here"
$SecurePassword= $Password | ConvertTo-SecureString -AsPlainText -Force
 
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
 
#Get the List
$List = $Ctx.Web.Lists.GetByTitle("Documents")

#Query to Get All List Items Created in the Past 7 Days
$CAMLQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query = "@
<View Scope='RecursiveAll'>
    <Query>        
        <Where>
                <Geq>
                    <FieldRef Name='Created' />
                         <Value Type='DateTime'><Today OffsetDays='-7'/></Value>
                </Geq>
        </Where>
    </Query>
</View>"
$CAMLQuery.ViewXml =$Query

#Get List Items matching given conditions
$ListItems = $List.GetItems($CAMLQuery)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()

#Delete List Items
Write-host "Total Number of Items Matching:"$ListItems.Count
Foreach ($Item in $ListItems)
{
    $List.GetItemById($Item.id).Recycle() | Out-null
    Write-host "Deleted List Item:"$Item.Id
}
$Ctx.ExecuteQuery()

PnP PowerShell เพื่อลบรายการที่สร้างขึ้นใน 7 วันที่ผ่านมา:

แม้ว่าวิธี CAML ในการกรองรายการเป็นแนวทางที่แนะนำ แต่นี่เป็นวิธีอื่นในการลบรายการที่สร้างขึ้นในจำนวน N วันที่ผ่านมา


#Variables
$SiteURL = "https://crescent.sharepoint.com"
$listName ="Documents"
$Days = -7
$UserName = "Salaudeen@TheCrescent.com"
$Password = "Password1"
$SecurePassword= $Password | ConvertTo-SecureString -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $UserName, $SecurePassword

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred

#Get All List Items
$ListItems = Get-PnPListItem -List $ListName -Fields "Title","Created","ID","GUID" -PageSize 2000

#Set Cutoff Date - Past 7 days
$CutoffDate = (Get-Date).AddDays($Days)

ForEach($Item in $ListItems) 
{
    #Get the Created Date of the Item
    $CreatedDate = $Item["Created"]

    If($CreatedDate -ge $CutoffDate) 
    {
        Remove-PnPListItem -List $ListName -Identity $Item.Id -Force -Recycle
        Write-Host "Deleted List Item:"$Item.Id
    }
}

แทนที่ค่าของตัวแปรตามไซต์ รายการ และอื่นๆ ของ SharePoint Online ตัวแปร $Days จะกำหนดจำนวนวันที่นับจากวันที่ปัจจุบันเพื่อลบรายการ ในตัวอย่างนี้ กำหนดเป็น 7 วัน

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