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

SharePoint Online: ลบไซต์ย่อยโดยใช้ PowerShell


ข้อกำหนด: SharePoint Online PowerShell เพื่อลบไซต์ย่อย

จะลบไซต์ย่อยใน SharePoint Online ได้อย่างไร

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

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

  1. เข้าสู่ระบบไซต์ SharePoint Online ของคุณ >> คลิกที่เกียร์การตั้งค่าไซต์ >> เลือก "การตั้งค่าไซต์"
  2. คลิกที่ลิงก์ "ลบไซต์นี้" ใต้กลุ่ม "การกระทำในไซต์" (ถ้าคุณไม่เห็นลิงก์ “ลบไซต์นี้” นั่นหมายความว่าคุณไม่ได้รับอนุญาตให้ลบไซต์ หรือคุณอยู่บนไซต์ทีมหรือไซต์การติดต่อสื่อสารที่ทันสมัย!)

  3. สิ่งนี้จะนำคุณไปสู่หน้า "ลบไซต์นี้" ในไซต์แบบคลาสสิก คลิกที่ปุ่ม "ลบ" และยืนยันการลบไซต์ย่อย

  4. และคุณจะได้รับข้อความ “เว็บไซต์ของคุณถูกลบแล้ว” ข้อความในอีกสักครู่

SharePoint Online: จะลบไซต์ย่อยได้อย่างไร

ในทำนองเดียวกัน บนไซต์ SharePoint สมัยใหม่ คุณสามารถคลิกที่ "การตั้งค่า" >> ข้อมูลไซต์ >> ลบไซต์

ยืนยันการลบโดยเลือก “ใช่ ลบไซต์นี้และเนื้อหาที่เกี่ยวข้อง” ช่องทำเครื่องหมายแล้วคลิกที่ปุ่ม "ลบ" เมื่อคุณลบไซต์ คุณจะลบทรัพยากรทั้งหมดที่เกี่ยวข้องกับไซต์ด้วย เช่น ไซต์ย่อย การตั้งค่าไซต์ ข้อมูลผู้ใช้ เนื้อหาของไซต์ เช่น เอกสาร ไลบรารีเอกสาร รายการ และข้อมูลรายการที่เกี่ยวข้องกับไซต์

ลบไซต์ย่อยของ SharePoint Online โดยใช้ไซต์และพื้นที่ทำงาน

คุณยังสามารถใช้ลิงก์ "ไซต์และพื้นที่ทำงาน" เพื่อลบไซต์ย่อยจำนวนมากใน SharePoint Online นี่คือวิธีการ:

  1. นำทางไปยังไซต์แม่ซึ่งมีไซต์ย่อยที่คุณต้องการลบ
  2. คลิกที่การตั้งค่าเกียร์ >> เลือกการตั้งค่าไซต์
  3. ในหน้าการตั้งค่าไซต์ ใต้ส่วนการดูแลไซต์ คลิกลิงก์ "ไซต์และพื้นที่ทำงาน"
  4. บนเพจไซต์และพื้นที่ทำงาน คลิกไอคอนลบถัดจากไซต์ย่อยที่ต้องการลบ
  5. คลิกปุ่มลบ >> คลิกปุ่มตกลงเพื่อยืนยัน

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

คุณต้องมี SharePoint Online Management Shell หรือ CSOM SDK สำหรับ SharePoint Online ติดตั้งบนเครื่องของคุณก่อนที่จะรันสคริปต์เหล่านี้ สามารถดาวน์โหลดได้จากที่นี่ https://www.microsoft.com/en-in/download/details.aspx?id=35588

ถ้าคุณลบไซต์ย่อยผ่านทางส่วนติดต่อผู้ใช้บนเว็บโดยไม่ตั้งใจ (ไม่ใช่ผ่าน PowerShell!) ผู้ดูแลไซต์คอลเลกชันสามารถคืนค่าไซต์นั้นได้จากถังรีไซเคิลของไซต์คอลเลกชัน

ลบไซต์ย่อยใน SharePoint Online โดยใช้ PowerShell:

วิธีลบไซต์ย่อยใน SharePoint Online โดยใช้ PowerShell แม้ว่าการลบไซต์ย่อยใน SharePoint Online โดยใช้ UI ของเว็บเบราว์เซอร์จะค่อนข้างง่ายกว่า แต่เราอาจต้องใช้ PowerShell ในบางกรณี เช่น:

  • เมื่อคุณต้องลบไซต์ย่อยจำนวนมาก
  • หากคุณต้องการลบไซต์ย่อยที่มีไซต์ย่อย (คุณจะได้รับข้อผิดพลาดนี้: “มีปัญหาในการลบเว็บไซต์ “/sites/Sales/apac” ไซต์ที่มีไซต์ย่อยหรือบางแอปไม่สามารถทำได้ ถูกลบ โปรดลองอีกครั้งหลังจากลบไซต์ย่อยทั้งหมดและลบแอปแล้ว”)

นี่คือ PowerShell เพื่อลบไซต์ย่อยใน SharePoint Online:


#Load SharePoint Online 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/townhall2019/"

Try{  
    #Get Credentials to connect
    $Cred= Get-Credential

    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) 
    
    #Get the subsite to delete
    $web = $Ctx.Web
    $Ctx.Load($web)
    $Ctx.ExecuteQuery()

    #sharepoint online powershell remove subsite
    $web.DeleteObject()
    $Ctx.ExecuteQuery()

    Write-Host "Subsite Deleted:" $web.Title -foregroundcolor Green
}
Catch{
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

สคริปต์ PowerShell นี้เอาไซต์ย่อย SharePoint Online ออก โปรดทราบว่าวิธีการเหล่านี้จะลบไซต์ย่อยอย่างถาวรโดยไม่ต้องส่งไปยังถังรีไซเคิล (หรืออีกนัยหนึ่ง หากไม่สามารถกู้คืนไซต์ย่อยที่ถูกลบผ่าน PowerShell ได้)

วิธีการลบไซต์ย่อยทั้งหมดภายใต้ไซต์ใน SharePoint Online โดยใช้ PowerShell

มารวมสคริปต์ด้านบนไว้ในฟังก์ชันที่นำมาใช้ซ้ำได้เพื่อลบไซต์ย่อยแบบวนซ้ำในไซต์คอลเลกชัน!


#Load SharePoint Online 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://portal.sharepoint.com/sites/Sales/apac/us/"
$UserName="Salaudeen@crescent.com"
$Password ="password goes here"

#Function to delete a subsite and its all child sites
Function Remove-SPOWeb() {
param(
    $WebURL = $(throw "Please Enter the Subsite URL to Remove:")
)
    try{
        #Setup Credentials to connect
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
  
        #Get Web information and subsites
        $Context = New-Object Microsoft.SharePoint.Client.ClientContext($webURL)
        $Context.Credentials = $credentials
        #get the subsite
        $web = $context.Web
        $context.Load($web)
        $Context.Load($web.Webs)
        $Context.executeQuery() 
 
        #Iterate through each subsite in the current web
        foreach ($Subweb in $web.Webs)
        {
            #Call the function recursively to process all subsites underneaththe current web
            Remove-SPOWeb($Subweb.url)
        }

        #sharepoint online powershell delete web
        $web.DeleteObject()
        $context.ExecuteQuery()
        Write-Host "SubSite Deleted:" $web.Title -foregroundcolor Green
        }
    catch{
        write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
    }
}
 
#Call the function to remove subsite
Remove-SPOWeb -WebURL $SiteUrl

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

SharePoint Online PnP PowerShell เพื่อลบไซต์ย่อย

เมื่อต้องการลบไซต์ย่อยใน SharePoint Online โดยใช้ PnP PowerShell ให้ใช้: คำสั่ง Remove-PnPWeb PowerShell นี่คือวิธีการลบไซต์ย่อยโดยใช้ PnP PowerShell:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/Sales"
$SubsiteURL = "2018" # Just URL of the Subsite - NOT Relative Path

#Get Credentials to connect
$Cred = Get-Credential
 
#Connect PnP Online to Parent Web
Connect-PnPOnline -Url $SiteURL -Credentials $Cred

#sharepoint online delete subsite powershell
Remove-PnPWeb -Identity $SubsiteURL -Force

กระบวนการ Remove-PnPWeb cmdlet จะลบไซต์ย่อยที่ระบุอย่างถาวร อย่างไรก็ตาม หากไซต์ย่อยของคุณมีไซต์ย่อย สคริปต์จะลงเอยด้วยข้อผิดพลาดว่า:
Remove-PnPWeb : มีปัญหาในการลบเว็บไซต์ “/Sep” . ไซต์ที่มีไซต์ย่อยหรือบางแอปไม่สามารถลบได้ โปรดลองอีกครั้งหลังจากลบไซต์ย่อยทั้งหมดและลบแอปออกแล้ว

คุณจะได้รับข้อความที่คล้ายกันเมื่อคุณพยายามลบไซต์ที่มีไซต์ย่อยโดยใช้เว็บเบราว์เซอร์:

จะลบไซต์ที่มีไซต์ย่อยทั้งหมดโดยใช้ PnP PowerShell ได้อย่างไร

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


#Subsite URL
$SiteURL = "https://crescent.sharepoint.com/sites/BoardPapers/September2020"

#Connect to subsite
Connect-PnPOnline -Url $SiteURL -Interactive

#Get all subsites and remove them
Get-PnPSubWebs | Remove-PnPWeb -Force

วิธีการลบไซต์ย่อยทั้งหมดออกจากทุกระดับ? นี่คือ PnP PowerShell เพื่อลบไซต์ย่อยทั้งหมดแบบเรียกซ้ำใน SharePoint Online:


#Function to delete a subsite and its all child sites
Function Remove-PnPAllWebs([Microsoft.SharePoint.Client.Web]$Web) 
{
    #Get All Subsites of the web
    $SubWebs  = Get-PnPSubWeb -Identity $Web
    ForEach($SubWeb in $SubWebs)
    {
        #Call the function recursively to remove subsites
        Remove-PnPAllWebs($SubWeb)
    }
    #Delete the subsite
    Remove-PnPWeb -Identity $Web -Force
    Write-host -f Green "Deleted Sub-Site:"$Web.URL
}

#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sales"

#Get Credentials to connect
$Cred = Get-Credential
 
#Connect PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred

#Get the Web 
$Web = Get-PnPWeb

#sharepoint online powershell delete all subsites
Remove-PnPAllWebs $Web

เมื่อต้องการลบคอลเลกชันไซต์ SharePoint Online คุณสามารถใช้ศูนย์การจัดการ SharePoint Online ใน Microsoft 365 หรือ PowerShell: วิธีการลบคอลเลกชันไซต์ SharePoint Online

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

วิธีปิดการใช้งานการสร้างไซต์ย่อยใน SharePoint Online

หากต้องการปิดใช้งานการสร้างไซต์ย่อยในไซต์ SharePoint Online ให้ทำดังต่อไปนี้: เข้าสู่ระบบ SharePoint Admin Center >> คลิกที่การตั้งค่า >> การตั้งค่าแบบคลาสสิก >> ภายใต้ส่วน "การสร้างไซต์ย่อย" ตั้งค่า "ซ่อนคำสั่งไซต์ย่อย" เพื่อปิดการสร้างไซต์ย่อย SharePoint ไซต์ทั้งหมด จากนั้นคลิกที่ปุ่ม “บันทึก ” ที่ด้านล่างของหน้าเพื่อยอมรับการเปลี่ยนแปลงของคุณ
ข้อมูลเพิ่มเติม: ปิดใช้งานการสร้างไซต์ย่อยใน SharePoint Online

จะสร้างไซต์ย่อยที่ทันสมัยใน SharePoint Online ได้อย่างไร

เมื่อต้องการเพิ่มไซต์ย่อยใน SharePoint Online ให้ทำตามขั้นตอนเหล่านี้:
ลงชื่อเข้าใช้ไซต์ SharePoint Online ของคุณ >> คลิกที่ไอคอนรูปเฟืองการตั้งค่าไซต์ >> เลือก "เนื้อหาของไซต์" บนแถบเครื่องมือ คลิกที่ "ใหม่" และคลิกที่ลิงก์ "ไซต์ย่อย " (ทางลัด URL: /_layouts/15/newsbweb.aspx) ระบุชื่อ คำอธิบาย URL และเทมเพลตสำหรับไซต์ย่อยใหม่ของคุณ ระบุการตั้งค่าเพิ่มเติมอื่นๆ เช่น สิทธิ์และการนำทาง คลิกปุ่ม "สร้าง" ที่ด้านล่างของหน้าเพื่อสร้างไซต์ย่อยใน SharePoint Online
ข้อมูลเพิ่มเติม: เพิ่มไซต์ย่อยใน SharePoint Online

ฉันจะกู้คืนไซต์ย่อยที่ถูกลบใน SharePoint Online ได้อย่างไร

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

ไซต์ SharePoint ที่ถูกลบสามารถอยู่ในถังรีไซเคิลได้นานแค่ไหน

93 วันใน SharePoint Online!

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