Create Site collection using power shell
#Checking is site collection already exists or not
function isSiteCollectionExists($SiteCollectionUrl)
{
$sitecoll;
try
{
$sitecoll=Get-SPWeb $SiteCollectionUrl -ErrorAction SilentlyContinue
Write-Host $sitecoll
if($sitecoll -eq $null)
{
return $false;
}
Write-Host "Site collection already exists."
return $true;
}
catch
{
# Do nothing suppressing error
}
return $false;
}
function isDatabaseExists($webappUrl,$contentDbName)
{
$dd=Get-SPContentDatabase -WebApplication $webappUrl | Where { $_.Name -eq $contentDbName } -ErrorAction SilentlyContinue
if ($dd -eq $null) {
return $false
}
else {
Write-Host "Content database with this name already exists."
return $true
}
}
#create a site collection and take the parameter as web application url,site admin,name,title,site template and database name.
function CreateSiteCollection($rootUrl,$siteAdmin,$siteName,$siteUrl,$siteTemplate,$databaseName, $dbPrefix)
{
Write-Host "WebApplication root url" $rootUrl;
Write-Host "Site Admin" $siteAdmin;
Write-Host "Site Name" $siteName;
Write-Host "Site Url" $siteUrl;
Write-Host "Site Template" $siteTemplate;
$dbName = "$($dbPrefix)_$($databaseName)";
Write-Host "Database Name" $dbName;
$webApp = Get-SPWebApplication $rootUrl;
if (!$webApp)
{
Write-Host "I didn't find a Web Application with that name.";
}
else
{
$managedPathUrl = $rootUrl + "/sites/" + $siteUrl;
$flag=isSiteCollectionExists($managedPathUrl)
if($flag -ne $true)
{
# Attempt to mount the database. If the database exists it will mount it, if it does not it will create a new one
# Note: the newly created content database does not have a site collection in it... yet.
Write-Host "Attempting to mount $dbName on web Application $rootUrl..." -foregroundcolor Yellow
Mount-SPContentDatabase $dbName -WebApplication $rootUrl -ErrorAction SilentlyContinue
Write-Host "Mounted successfully" -foregroundcolor Green
$db = Get-SPContentDatabase -WebApplication $rootUrl | Where { $_.Name -eq $dbName } -ErrorAction SilentlyContinue
# If a content database was created, but does not have a site collection, make one
if($db.CurrentSiteCount -eq 0)
{
Write-Host "creating site collection $siteName at $managedPathUrl against db $dbName..." -foregroundcolor Yellow;
$sc=New-SPSite -Name $siteName -Url $managedPathUrl -Template $siteTemplate -OwnerAlias $siteAdmin -ContentDatabase $dbName;
Write-Host $siteName "created successfully against $dbName...";
}
}
#Write-Host "Script Complete";
}
}
function isSiteCollectionExists($SiteCollectionUrl)
{
$sitecoll;
try
{
$sitecoll=Get-SPWeb $SiteCollectionUrl -ErrorAction SilentlyContinue
Write-Host $sitecoll
if($sitecoll -eq $null)
{
return $false;
}
Write-Host "Site collection already exists."
return $true;
}
catch
{
# Do nothing suppressing error
}
return $false;
}
function isDatabaseExists($webappUrl,$contentDbName)
{
$dd=Get-SPContentDatabase -WebApplication $webappUrl | Where { $_.Name -eq $contentDbName } -ErrorAction SilentlyContinue
if ($dd -eq $null) {
return $false
}
else {
Write-Host "Content database with this name already exists."
return $true
}
}
#create a site collection and take the parameter as web application url,site admin,name,title,site template and database name.
function CreateSiteCollection($rootUrl,$siteAdmin,$siteName,$siteUrl,$siteTemplate,$databaseName, $dbPrefix)
{
Write-Host "WebApplication root url" $rootUrl;
Write-Host "Site Admin" $siteAdmin;
Write-Host "Site Name" $siteName;
Write-Host "Site Url" $siteUrl;
Write-Host "Site Template" $siteTemplate;
$dbName = "$($dbPrefix)_$($databaseName)";
Write-Host "Database Name" $dbName;
$webApp = Get-SPWebApplication $rootUrl;
if (!$webApp)
{
Write-Host "I didn't find a Web Application with that name.";
}
else
{
$managedPathUrl = $rootUrl + "/sites/" + $siteUrl;
$flag=isSiteCollectionExists($managedPathUrl)
if($flag -ne $true)
{
# Attempt to mount the database. If the database exists it will mount it, if it does not it will create a new one
# Note: the newly created content database does not have a site collection in it... yet.
Write-Host "Attempting to mount $dbName on web Application $rootUrl..." -foregroundcolor Yellow
Mount-SPContentDatabase $dbName -WebApplication $rootUrl -ErrorAction SilentlyContinue
Write-Host "Mounted successfully" -foregroundcolor Green
$db = Get-SPContentDatabase -WebApplication $rootUrl | Where { $_.Name -eq $dbName } -ErrorAction SilentlyContinue
# If a content database was created, but does not have a site collection, make one
if($db.CurrentSiteCount -eq 0)
{
Write-Host "creating site collection $siteName at $managedPathUrl against db $dbName..." -foregroundcolor Yellow;
$sc=New-SPSite -Name $siteName -Url $managedPathUrl -Template $siteTemplate -OwnerAlias $siteAdmin -ContentDatabase $dbName;
Write-Host $siteName "created successfully against $dbName...";
}
}
#Write-Host "Script Complete";
}
}
$webApplicationURL= $args[0]
$dbPrefix = $args[1]
$farmAcount =DOMAIN\SPDFarm"
$publishingTemplate="BLANKINTERNETCONTAINER#0"
#here it creates 2 site collection but we can write as many number we want
CreateSiteCollection $webApplicationURL $farmAcount "Sitename" "siteURL" $publishingTemplate "db1" $dbPrefix
CreateSiteCollection $webApplicationURL $farmAcount "SiteName1" "SiteURL1" $publishingTemplate "db2" $dbPrefix
Comments
Post a Comment