SharePoint Online: สร้างไซต์ย่อยที่มีสิทธิ์เฉพาะโดยใช้ PowerShell
ข้อกำหนด: สร้างไซต์ย่อยที่มีสิทธิ์เฉพาะใน SharePoint Online โดยใช้ PowerShell
วิธีสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะใน SharePoint Online
คุณสามารถสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะใน SharePoint Online เพื่อให้บุคคลที่เจาะจงสามารถเข้าถึงข้อมูลเฉพาะบนไซต์ของคุณได้ บทความนี้จะแสดงวิธีการสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะใน SharePoint Online
- เข้าสู่ระบบไซต์ SharePoint Online ของคุณในฐานะผู้ดูแลไซต์คอลเลกชัน >> คลิกที่ "การตั้งค่า" >> คลิกที่ "เนื้อหาของไซต์"
- คลิกที่ปุ่ม "ใหม่" บนแถบเครื่องมือ >> เลือก "ไซต์ย่อย"
ระบุชื่อและ URL ไปยังไซต์ย่อยของคุณ ในส่วน "สิทธิ์" เลือก "ใช้สิทธิ์เฉพาะ" และคลิกที่ปุ่ม "สร้าง"
ในหน้าถัดไป คุณจะได้รับการกำหนดค่า "การตั้งค่าสิทธิ์" สำหรับไซต์ย่อย SharePoint Online ที่ช่วยให้คุณสามารถสร้างกลุ่มเริ่มต้นสำหรับไซต์ (URL: /_layouts/15/permsetup.aspx)
- สร้างกลุ่มหรือเลือกกลุ่มที่มีอยู่เพื่อสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะ
เมื่อสร้างไซต์ย่อยแล้ว คุณสามารถจัดการสิทธิ์ได้โดยการเพิ่มหรือลบผู้ใช้หรือกลุ่มออกจากไซต์
PowerShell เพื่อสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะ
PowerShell มอบวิธีที่ยอดเยี่ยมในการทำให้งาน SharePoint ในแต่ละวันเป็นแบบอัตโนมัติ โพสต์ในบล็อกนี้จะแสดงวิธีสร้างไซต์ย่อยที่มีสิทธิ์เฉพาะ
#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"
#Function to create a subsite with unique permissions
Function New-SPOSubsite($SiteTitle, $SiteURL, $SiteTemplate, $ParentSiteURL)
{
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($ParentSiteURL)
$Ctx.Credentials = $Cred
#Provide Subsite Parameters
$WebCI = New-Object Microsoft.SharePoint.Client.WebCreationInformation
$WebCI.Title = $SiteTitle
$WebCI.WebTemplate = $SiteTemplate
$WebCI.Url = $SiteURL
$SubWeb = $Ctx.Web.Webs.Add($WebCI)
$Ctx.ExecuteQuery()
Write-host "Subsite Created Successfully!" -ForegroundColor Green
#Break Inheritance
$SubWeb.BreakRoleInheritance($False, $False)
$SubWeb.Update()
$Ctx.ExecuteQuery()
}
catch {
write-host -f Red "Error:" $_.Exception.Message
}
}
#Variables for processing
$SiteTitle = "Sales Portal"
$SiteTemplate = "STS#0" #Team Site
$SiteURL ="sales"
$ParentSiteURL = "https://Crescent.sharepoint.com"
#$WCI.Language = "1033"
#Call the function with parameters
New-SPOSubsite -SiteTitle $SiteTitle -SiteURL $SiteURL -SiteTemplate $SiteTemplate -ParentSiteURL $ParentSiteURL
สคริปต์นี้สร้างไซต์ย่อยที่มีสิทธิ์เฉพาะ แต่เดี๋ยวก่อน เรายังไม่เสร็จ! เนื่องจากเราต้องการสิทธิ์เฉพาะ เราจำเป็นต้องสร้างกลุ่มสิทธิ์เริ่มต้น: เจ้าของ สมาชิก และผู้เยี่ยมชมสำหรับไซต์
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"
#Function to Create a Group
Function Create-SPOGroup([Microsoft.SharePoint.Client.Web]$Web, $GroupName, $PermissionLevel)
{
Try {
$Ctx = $Web.Context
#Get Existing Groups
$Groups = $Web.SiteGroups
$Ctx.Load($Groups)
$Ctx.ExecuteQuery()
#Check if the Group Exists already
$Group = $Groups | Where { $_.Title -eq $GroupName}
If(-Not $Group)
{
$GroupInfo = New-Object Microsoft.SharePoint.Client.GroupCreationInformation
$GroupInfo.Title = $GroupName
$Group = $Web.SiteGroups.Add($GroupInfo)
$Ctx.ExecuteQuery()
#Assign permission to the group
$RoleDefinition = $web.RoleDefinitions.GetByName($PermissionLevel)
$RoleDefBinding = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($Ctx)
$RoleDefBinding.Add($RoleDefinition)
$Ctx.Load($Web.RoleAssignments.Add($Group,$RoleDefBinding))
$Ctx.ExecuteQuery()
Write-host -f Green "Created Group $GroupName and Assigned Permissions $PermissionLevel"
}
Return $Group
}
catch {
write-host -f Red "Error:" $_.Exception.Message
}
}
#Function default "Owners, Members and Visitors Group
Function Create-SPODefaultGroups($SiteURL)
{
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the Web
$Web=$Ctx.Web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()
#Set Group Names
$OwnersGroupName = $Web.Title + " Owners"
$MembersGroupName = $Web.Title + " Members"
$VisitorsGroupName = $Web.Title + " Visitors"
#Create Default Groups
$OwnersGroup = Create-SPOGroup -Web $Web -GroupName $OwnersGroupName -PermissionLevel "Full Control"
$MembersGroup = Create-SPOGroup -Web $Web -GroupName $MembersGroupName -PermissionLevel "Edit"
$VisitorsGroup = Create-SPOGroup -Web $Web -GroupName $VisitorsGroupName -PermissionLevel "Read"
#Associate Default Groups
$web.AssociatedOwnerGroup = $OwnersGroup
$web.AssociatedOwnerGroup.Update()
$web.AssociatedMemberGroup = $MembersGroup
$web.AssociatedMemberGroup.Update()
$web.AssociatedVisitorGroup = $VisitorsGroup
$web.AssociatedVisitorGroup.Update()
$web.Update()
$Ctx.ExecuteQuery()
}
catch {
write-host -f Red "Error:" $_.Exception.Message
}
}
#Call the function to create default site groups
Create-SPODefaultGroups "https://Crescent.sharepoint.com/sales"
และผลลัพธ์:
PnP PowerShell เพื่อสร้างใหม่ไซต์ย่อยที่มีสิทธิ์เฉพาะใน SharePoint Online
นอกจากนี้เรายังสามารถใช้ PnP PowerShell cmdlet New-PnPWeb เพื่อเพิ่มไซต์ย่อยที่มีสิทธิ์เฉพาะ และตั้งค่ากลุ่มผู้ใช้เริ่มต้นสำหรับไซต์ SharePoint Online มาดูวิธีใช้ PnP PowerShell เพื่อสร้างไซต์ย่อยใหม่ที่มีสิทธิ์เฉพาะ:
#Variables for processing
$SiteTitle = "Purchase Portal"
$SiteTemplate = "STS#3" #Modern Team Site
$SubSiteURL ="purchase"
$SiteURL = "https://Crescent.sharepoint.com"
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Create new subsite with broken permission
$Web = New-PnPWeb -Title $SiteTitle -Url $SubSiteURL -Template $SiteTemplate -BreakInheritance -ErrorAction Stop
Write-host -f Green "New Subsite '$SiteTitle' created with Unique Permissions..."
#Connect to newly created subsite
Connect-PnPOnline -Url $Web.Url -Credentials $Cred
#Set Group Names
$OwnersGroupName = $Web.Title + " Owners"
$MembersGroupName = $Web.Title + " Members"
$VisitorsGroupName = $Web.Title + " Visitors"
#Setup Default Groups
$OwnersGroup = Get-PnPGroup -Identity $OwnersGroupName -ErrorAction SilentlyContinue
If(-Not $OwnersGroup)
{
$OwnersGroup = New-PnPGroup -Title $OwnersGroupName
Write-host -f Green "Created Owners Group '$OwnersGroupName'"
}
Set-PnPGroup -Identity $OwnersGroup -SetAssociatedGroup Owners -AddRole "Full Control"
#Members Group
$MembersGroup = Get-PnPGroup -Identity $MembersGroupName -ErrorAction SilentlyContinue
If(-Not $MembersGroup)
{
$MembersGroup = New-PnPGroup -Title $MembersGroupName
Write-host -f Green "Created Members Group '$MembersGroupName'"
}
Set-PnPGroup -Identity $MembersGroup -SetAssociatedGroup Members -AddRole "Edit"
#Visitors Group
$VisitorsGroup = Get-PnPGroup -Identity $VisitorsGroupName -ErrorAction SilentlyContinue
If(-Not $VisitorsGroup)
{
$VisitorsGroup = New-PnPGroup -Title $VisitorsGroupName
Write-host -f Green "Created Visitors Group '$VisitorsGroupName'"
}
Set-PnPGroup -Identity $VisitorsGroup -SetAssociatedGroup Visitors -AddRole "Read"
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
ด้วยการใช้สิทธิ์เฉพาะสำหรับไซต์ย่อย คุณสามารถให้หรือจำกัดการเข้าถึงเฉพาะผู้ใช้หรือกลุ่ม ทำให้คุณควบคุมได้มากขึ้นว่าใครสามารถดูหรือแก้ไขเนื้อหาในไซต์ได้ หากต้องการสร้างไซต์ย่อยหลายรายการ ให้ใช้: วิธีสร้างไซต์ย่อยจำนวนมากใน SharePoint Online โดยใช้ PowerShell


