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";
    }
}


$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

Popular posts from this blog

SharePoint Recurrence Event XML Format and Standard

Unable to find the npm root, something went wrong. Unable to upgrade the yoman generator

Sort By Field REST API Result In SharePoint