Our goal is to create 50 parent subsites and iteratively create 5 nested child subsites underneath each of them. So mathematically it is 50 subsites * 5 nested subsites per parent subsite = 250 nested sub-sites in total.
The powershell scriptlet below accepts Site Collection URL, Site Collection Template, Site Collection Language, Sub-site Name and a Nested Sub-site name as configurable parameters, it then goes through each of them and creates nested sub-sites for that particular Site Collection.
Instructions:
1. Copy and Paste the code below and save it as CreateNestedSubSites.ps1, see highlighted yellow sections to change configurable values:
Add-PsSnapin Microsoft.SharePoint.PowerShell
## SharePoint DLL
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
#Creating Sub Sites in top site collection.
Write-Output " "
Write-Output "Creating 250 Nested Sub-Sites"
$SiteCollectionURL = "http://localhost/sites/NestedSubSites"
$SiteCollectionTemplate = "BLANKINTERNETCONTAINER#0"
$SiteCollectionLanguage = 1033
$StaplingWeb = "StaplingWeb"
$StaplingNestedSubWeb = "NestedWeb"
## Iterate via 50 Subsites
for($i=0 ; $i -lt 50 ; $i++)
{
$SiteUrl = ""
$SubSiteName = ""
$SiteUrl = $SiteCollectionURL + "/"
$SubSiteName = $StaplingWeb + $i
$SiteUrl = $SiteUrl += $SubSiteName
Write-Host "Creating Sub-Site for " $SubSiteName
New-SPWeb $SiteUrl -Template $SiteCollectionTemplate -Name $SubSiteName -UseParentTopNav -Language $SiteCollectionLanguage
Write-Host "Site Created for " $SubSiteName
## Create 5 Subsites underneath each of the 50 subsites
for($j=0 ; $j -lt 5 ; $j++)
{
$NestedSubSiteUrl = ""
$NestedSubSiteName = ""
$NestedSubSiteName = $StaplingNestedSubWeb + $j
$NestedSubSiteUrl = $SiteUrl + "/"
$NestedSubSiteUrl = $NestedSubSiteUrl += $NestedSubSiteName
Write-Host "Creating Nested Sub-Site for :" $NestedSubSiteName
New-SPWeb $NestedSubSiteUrl -Template $SiteCollectionTemplate -Name $NestedSubSiteName -UseParentTopNav -Language $SiteCollectionLanguage
Write-Host "Nested Sub-Site created for :" $NestedSubSiteName
}
}
Remove-PsSnapin Microsoft.SharePoint.PowerShell
2. To automatically run the CreateNestedSubSites.ps1 script as a batch utility, Copy and paste code below and save it with a .bat file extension
cd /d %~dp0
powershell -noexit -file ".\CreateNestedSubSites.ps1" "%CD%"
pause
Run the Script and enjoy :)
The powershell scriptlet below accepts Site Collection URL, Site Collection Template, Site Collection Language, Sub-site Name and a Nested Sub-site name as configurable parameters, it then goes through each of them and creates nested sub-sites for that particular Site Collection.
Instructions:
1. Copy and Paste the code below and save it as CreateNestedSubSites.ps1, see highlighted yellow sections to change configurable values:
Add-PsSnapin Microsoft.SharePoint.PowerShell
## SharePoint DLL
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
#Creating Sub Sites in top site collection.
Write-Output " "
Write-Output "Creating 250 Nested Sub-Sites"
$SiteCollectionURL = "http://localhost/sites/NestedSubSites"
$SiteCollectionTemplate = "BLANKINTERNETCONTAINER#0"
$SiteCollectionLanguage = 1033
$StaplingWeb = "StaplingWeb"
$StaplingNestedSubWeb = "NestedWeb"
## Iterate via 50 Subsites
for($i=0 ; $i -lt 50 ; $i++)
{
$SiteUrl = ""
$SubSiteName = ""
$SiteUrl = $SiteCollectionURL + "/"
$SubSiteName = $StaplingWeb + $i
$SiteUrl = $SiteUrl += $SubSiteName
Write-Host "Creating Sub-Site for " $SubSiteName
New-SPWeb $SiteUrl -Template $SiteCollectionTemplate -Name $SubSiteName -UseParentTopNav -Language $SiteCollectionLanguage
Write-Host "Site Created for " $SubSiteName
## Create 5 Subsites underneath each of the 50 subsites
for($j=0 ; $j -lt 5 ; $j++)
{
$NestedSubSiteUrl = ""
$NestedSubSiteName = ""
$NestedSubSiteName = $StaplingNestedSubWeb + $j
$NestedSubSiteUrl = $SiteUrl + "/"
$NestedSubSiteUrl = $NestedSubSiteUrl += $NestedSubSiteName
Write-Host "Creating Nested Sub-Site for :" $NestedSubSiteName
New-SPWeb $NestedSubSiteUrl -Template $SiteCollectionTemplate -Name $NestedSubSiteName -UseParentTopNav -Language $SiteCollectionLanguage
Write-Host "Nested Sub-Site created for :" $NestedSubSiteName
}
}
Remove-PsSnapin Microsoft.SharePoint.PowerShell
2. To automatically run the CreateNestedSubSites.ps1 script as a batch utility, Copy and paste code below and save it with a .bat file extension
cd /d %~dp0
powershell -noexit -file ".\CreateNestedSubSites.ps1" "%CD%"
pause
Run the Script and enjoy :)