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

SharePoint Online: เพิ่ม/อัปเดต/ลบจำนวนมากเร็วขึ้นด้วย New-PnPBatch ใน PowerShell


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

เพิ่มรายการ SharePoint Online เป็นกลุ่ม:

ฉันพยายามแทรก 1,000 รายการลงในรายการ และใช้เวลาเพียง 25 วินาทีกับฟีเจอร์แบบแบตช์ใหม่ของ PnP PowerShell ในขณะที่วิธี Add-PnPListItem ปกติจะใช้เวลา 250 วินาทีในการเพิ่ม 1,000 รายการลงในรายการ นี่คือตัวอย่าง:


$SiteURL = "https://Crescent.sharepoint.com/sites/Operations"
$ListName = "Random"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Create a New Batch
$Batch = New-PnPBatch

#Add List Items
For($i=1; $i-le 1000; $i++)
{
    Add-PnPListItem -List $ListName -Values @{"Title" = $i} -Batch $Batch
}

#Send Batch to the server
Invoke-PnPBatch -Batch $Batch

ที่นี่ แทนที่จะส่งคำขอแต่ละรายการโดยตรงไปยังไซต์ SharePoint Online ด้วย Add-PnPListItem cmdlet เราได้แบทช์คำขอเหล่านั้นด้วยตัวแปร $Batch จากนั้นแบทช์จะถูกส่งไปยัง SharePoint Online โดยใช้ Invoid-PnPBatch cmdlet

อัปเดตรายการ SharePoint Online ในชุดงาน:

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


#Create a New Batch
$Batch = New-PnPBatch

#Update List Items
For($i=1; $i-le 1000; $i++)
{    
    Set-PnPListItem -List $ListName -Identity $i -Values @{"Title" = "Updated Item:"+$i} -Batch $Batch
}

#Send Batch to the server
Invoke-PnPBatch -Batch $Batch

จะลบรายการสินค้าเป็นกลุ่มได้อย่างไร?

ใช้เวลาประมาณ 50 วินาทีในการลบ 1,000 รายการออกจากรายการ เป็นเรื่องที่น่าสังเกตว่าไม่ใช่ว่า cmdlets ทั้งหมดจะรองรับการดำเนินการแบบแบตช์ในปัจจุบัน แต่ฉันคิดว่าการรองรับสำหรับการประมวลผลแบบแบตช์จะถูกเพิ่มใน cmdlets ที่เกี่ยวข้องเร็วๆ นี้


$SiteURL = "https://Crescent.sharepoint.com/sites/Operations"
$ListName = "Random"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Get List Items to Delete
$ListItems =  Get-PnPListItem -List $ListName -PageSize 500

#Create a New Batch
$Batch = New-PnPBatch

#Delete All List Items
ForEach($Item in $ListItems)
{    
     Remove-PnPListItem -List $ListName -Identity $Item.ID -Batch $Batch
}

#Send Batch to the server
Invoke-PnPBatch -Batch $Batch

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

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