Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #################################################
- # VARIABLES A MODIFIER
- #################################################
- # Script variables
- $targetWebUrl = "https://XXX.sharepoint.com/sites/templates"
- $login = "XXX@XXX.fr"
- $WebTitle = "My Project 8"
- $WebRelativeUrl = "Prj8"
- #Web Template : {8B875C6B-137E-4BD3-A12A-83B2E0E58912}#TemplateDocumentsV1_0
- #Web Template : {DB2762F6-FE0D-4AE5-801D-B03F4705A0F8}#TemplateProjetV1_3
- $WebTemplate = "{DB2762F6-FE0D-4AE5-801D-B03F4705A0F8}#TemplateProjetV1_3"
- #################################################
- # FIN DES VARIABLES A MODIFIER
- #################################################
- cls
- $scriptFolder = "C:\Users\Thomas\Documents\00_Sources\SharePoint Scripts"
- Set-Location $scriptFolder
- Import-Module "../Microsoft.SharePoint.Client.dll"
- Import-Module "../Microsoft.SharePoint.Client.Runtime.dll"
- # SharePoint online credentials
- $SecurePassword = Read-Host -Prompt "Enter password" -AsSecureString
- $myCred = New-Object "Microsoft.SharePoint.Client.SharePointOnlineCredentials" -ArgumentList @($login, $SecurePassword)
- $csomWebContext = New-Object "Microsoft.SharePoint.Client.ClientContext" -ArgumentList @($targetWebUrl)
- $csomWebContext.Credentials = $myCred;
- $ctx = $null
- ####################################################################
- #
- # FUNCTIONS
- #
- #####################################################################
- function CreateWeb($Title, $RelativeUrl, $Description, $WebTemplate)
- {
- $ctx.Load($ctx.Web.Webs)
- $ctx.ExecuteQuery()
- $createWeb = New-Object Microsoft.SharePoint.Client.WebCreationInformation
- $createWeb.Url = $RelativeUrl
- $createWeb.Description = $Description
- $createWeb.UseSamePermissionsAsParentSite = $false
- $createWeb.Title = $Title
- $createWeb.WebTemplate = $WebTemplate
- $createWeb.Language = 1036
- $AddWeb = $ctx.Web.Webs.Add($createWeb)
- $ctx.Load($AddWeb)
- $ctx.ExecuteQuery()
- # Affectation des droits
- $roleAssignments = $AddWeb.RoleAssignments
- $ctx.Load($roleAssignments)
- $siteUsersWithTitle = $AddWeb.SiteUsers
- $ctx.Load($siteUsersWithTitle)
- $ctx.ExecuteQuery()
- $readerRole = $AddWeb.RoleDefinitions.GetByName("Lecture")
- $contribRole = $AddWeb.RoleDefinitions.GetByName("Modification")
- $adminRole = $AddWeb.RoleDefinitions.GetByName("Contrôle total")
- # Create role assignments
- $readerRoleAssignment = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($ctx)
- $readerRoleAssignment.Add($readerRole)
- $contribRoleAssignment = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($ctx)
- $contribRoleAssignment.Add($contribRole)
- $adminRoleAssignment = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($ctx)
- $adminRoleAssignment.Add($adminRole)
- # Créer les groupes
- $groupLecteursCI = New-Object Microsoft.SharePoint.Client.GroupCreationInformation
- $groupLecteursCI.Title = "Lecteurs $Title"
- $groupLecteurs = $AddWeb.SiteGroups.Add($groupLecteursCI)
- $groupMembresCI = New-Object Microsoft.SharePoint.Client.GroupCreationInformation
- $groupMembresCI.Title = "Membres $Title"
- $groupMembres = $AddWeb.SiteGroups.Add($groupMembresCI)
- $groupAdminCI = New-Object Microsoft.SharePoint.Client.GroupCreationInformation
- $groupAdminCI.Title = "Admins $Title"
- $groupAdmin = $AddWeb.SiteGroups.Add($groupAdminCI)
- # Apply the permission roles to the list.
- $ctx.Load($AddWeb.RoleAssignments.Add($groupLecteurs, $readerRoleAssignment))
- $ctx.Load($AddWeb.RoleAssignments.Add($groupMembres, $contribRoleAssignment))
- $ctx.Load($AddWeb.RoleAssignments.Add($groupAdmin, $adminRoleAssignment))
- $AddWeb.Update()
- $ctx.ExecuteQuery()
- $AddWeb
- }
- ####################################################################
- #
- # MAIN FLOW
- #
- #####################################################################
- $web = $csomWebContext.Web
- $csomWebContext.Load($web, $web.Title)
- #$cTypes = $csomWebContext.Site.GetWebTemplates(1036, 0)
- #$csomWebContext.Load($cTypes)
- $csomWebContext.Load($web.Webs)
- $csomWebContext.ExecuteQuery()
- $web.Title
- #foreach ($c in $cTypes)
- #{
- # $c.Name
- # $c.Title
- #}
- "Create $WebTitle"
- $ctx = $csomWebContext
- # Création du Web :
- $rootWeb = CreateWeb $WebTitle $WebRelativeUrl "Generated Web" $WebTemplate
- $csomWebContext.Dispose();
- "END"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement