functions/SPClientWeb/New-SPClientWeb.ps1
#Requires -Version 3.0 <# New-SPClientWeb.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function New-SPClientWeb { <# .SYNOPSIS Creates a new subsite. .DESCRIPTION The New-SPClientWeb function adds a new subsite to the site. .PARAMETER ClientContext Indicates the client context. If not specified, uses default context. .PARAMETER ParentObject Indicates the site which a subsite to be created. .PARAMETER Url Indicates the url. .PARAMETER Title Indicates the title. If not specified, uses default title of the site template. .PARAMETER Description Indicates the description. .PARAMETER Locale Indicates the locale ID in which the language is used. If not specified, uses the parent site language. .PARAMETER Template Indicates the template name. .PARAMETER UniquePermissions If specified, the site uses unique permissions. .PARAMETER Retrieval Indicates the data retrieval expression. .EXAMPLE New-SPClientWeb -Url "CustomWeb" -Title "Custom Web" .INPUTS None or SPClient.SPClientWebParentPipeBind .OUTPUTS Microsoft.SharePoint.Client.Web .LINK https://github.com/karamem0/SPClient/blob/master/doc/New-SPClientWeb.md #> [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [SPClient.SPClientWebParentPipeBind] $ParentObject, [Parameter(Mandatory = $true)] [string] $Url, [Parameter(Mandatory = $false)] [string] $Title, [Parameter(Mandatory = $false)] [string] $Description, [Parameter(Mandatory = $false)] [Alias('Language')] [string] $Locale, [Parameter(Mandatory = $false)] [SPClient.SPClientWebTemplateIdentityPipeBind] $Template, [Parameter(Mandatory = $false)] [switch] $UniquePermissions, [Parameter(Mandatory = $false)] [string] $Retrieval ) process { if ($ClientContext -eq $null) { throw "Cannot bind argument to parameter 'ClientContext' because it is null." } $Creation = New-Object Microsoft.SharePoint.Client.WebCreationInformation $Creation.Url = $Url $Creation.Language = $Locale if ($PSBoundParameters.ContainsKey('Template')) { $Creation.WebTemplate = $Template.GetValue($ClientContext) } $Creation.Title = $Title $Creation.Description = $Description $Creation.UseSamePermissionsAsParentSite = -not $UniquePermissions $ClientObject = $ParentObject.ClientObject.Webs.Add($Creation) $ClientObject.Update() Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval $Retrieval Write-Output $ClientObject } } |