This script picks the required data from a list "New Site Requests" which is filled by user who wants to create the site. This powershell can be used as a job to run automatically with certain interval.
cls
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$sourceWebURL = "http://sharepoint.site.com/support"
$sourceListName = "New Site Requests"
$SendErrorNoticeToEmailID = "abc@orgsite.com;xyz@orgsite.com;pqr@orgsite.com"
$server = "AppContent2013_SharePointSQL" ##Config DB Server
$database = "prod_sharepoint_Content" ##Config DB name
$DatePostFix = Get-Date -format "MM-dd-yyyy_hh-mm-ss"
$LogFileName = "C:\sharepointsite\NewSiteCreation\NewLogs\SiteCreationLog_" + $DatePostFix + ".csv"
$Site_Title = ""
$Site_Description = ""
$Site_URL = ""
$Template_Type = ""
$Template_Name = ""
$Primary_Administrator = ""
$Secondary_Administrator = ""
$Quota = ""
$language=""
$Site_Type = ""
$Site_UnitDept = ""
$Site_OwnCountry = ""
$Site_BusinessImpact = ""
$Site_Expirydate = ""
$Site_HasConfidentialInfo = ""
$Site_IPPProtected = ""
$Site_LegalData = ""
$Site_FuncArea = ""
$Site_isEPDP = ""
$global:URLsinError = ""
$global:dbName = ""
$global:dbAllowSitesCount = 0
$scriptError = $false
$URLsAlreadyinUse = $true
# Read List items
function GetListItemsforSiteCreation()
{
try {
$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spQuery = New-Object Microsoft.SharePoint.SPQuery
$camlQuery = "" +
"" +
"" +
"" +
"New " +
"
"+ "cls
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$sourceWebURL = "http://sharepoint.site.com/support"
$sourceListName = "New Site Requests"
$SendErrorNoticeToEmailID = "abc@orgsite.com;xyz@orgsite.com;pqr@orgsite.com"
$server = "AppContent2013_SharePointSQL" ##Config DB Server
$database = "prod_sharepoint_Content" ##Config DB name
$DatePostFix = Get-Date -format "MM-dd-yyyy_hh-mm-ss"
$LogFileName = "C:\sharepointsite\NewSiteCreation\NewLogs\SiteCreationLog_" + $DatePostFix + ".csv"
$Site_Title = ""
$Site_Description = ""
$Site_URL = ""
$Template_Type = ""
$Template_Name = ""
$Primary_Administrator = ""
$Secondary_Administrator = ""
$Quota = ""
$language=""
$Site_Type = ""
$Site_UnitDept = ""
$Site_OwnCountry = ""
$Site_BusinessImpact = ""
$Site_Expirydate = ""
$Site_HasConfidentialInfo = ""
$Site_IPPProtected = ""
$Site_LegalData = ""
$Site_FuncArea = ""
$Site_isEPDP = ""
$global:URLsinError = ""
$global:dbName = ""
$global:dbAllowSitesCount = 0
$scriptError = $false
$URLsAlreadyinUse = $true
# Read List items
function GetListItemsforSiteCreation()
{
try {
$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spQuery = New-Object Microsoft.SharePoint.SPQuery
$camlQuery = "
"
"
"
"
"
"
"
"
"
" + "
"
"
"
"+ "
" + "
" + "
"
$spQuery.Query = $camlQuery
$spSourceItems = $spSourceList.GetItems($spQuery)
$UrlsInUse = ""
foreach ($listItem in $spSourceItems)
{
try
{
$SURL = $listItem['Full URL']
$URLsAlreadyinUse = (Get-SPWeb $SURL -ErrorAction SilentlyContinue ) -ne $null
if ($URLsAlreadyinUse)
{
$URLsAlreadyinUseMsg = "Site ("+$listItem["Full URL"] +") Already Exists. Item Status changed accordingly, skipping to next item.URL"
$listItem["Status"] = "Site Already Exists";
$listItem.Update();
"{0},{1}" -f $listItem['Full URL'], $URLsAlreadyinUseMsg |Add-Content $LogFileName
$UrlsInUse = $UrlsInUse + $listItem["Full URL"] + "; ";
continue;
}
CreateSite $listItem $spSourceWeb
}
Catch [exception]
{
# Logging the exception in log file
"{0},{1}" -f $listItem['Full URL'], $_.Exception.Message |Add-Content $LogFileName
$scriptError = $true
}
}
# List Item For Loop finished
try
{
#Send email
$date = Get-Date
$subject = ""
$body = ""
if((-not [system.string]::IsNullOrEmpty($UrlsInUse)) -and (-not [system.string]::IsNullOrEmpty($global:URLsinError)))
{
$subject = "Site creation Job notification - $date Site(s) already exists & few Site(s) returned error on creation"
$body = "Following site(s) already exists :`r`n $UrlsInUse `r`n`n Following site(s) returned error on creation :`r`n $global:URLsinError"
SendMail $spSourceWeb $SendErrorNoticeToEmailID $subject $body
$scriptError = $true
}
elseif (-not [system.string]::IsNullOrEmpty($UrlsInUse))
{
$subject = "Site creation Job notification - $date Site(s) already exists"
$body = "Following site(s) already exists :`r`n $UrlsInUse"
SendMail $spSourceWeb $SendErrorNoticeToEmailID $subject $body
$scriptError = $true
}
elseif (-not [system.string]::IsNullOrEmpty($global:URLsinError))
{
$subject = "Site creation Job notification - $date : Site(s) returned error on creation"
$body = "Following site(s) returned error on creation :`r`n $global:URLsinError"
SendMail $spSourceWeb $SendErrorNoticeToEmailID $subject $body
$scriptError = $true
}
if (($URLsAlreadyinUse -ne $true) -and ($scriptError -ne $true))
{
$subject = "Site creation Job notification - $date : Site(s) is(are) created successfully"
$body = "Site(s) is(are) created successfully"
SendMail $spSourceWeb $SendErrorNoticeToEmailID $subject $body
}
}
Catch [exception]
{
# Logging the exception in log file
"{0},{1}" -f $global:URLsinError, "Error while sending mail--" + $_.Exception.Message |Add-Content $LogFileName
$scriptError = $true
}
}
Catch [exception]
{
# Logging the exception in log file
"{0},{1}" -f $global:URLsinError, "Error in method ( GetListItemsforSiteCreation() )--" + $_.Exception.Message |Add-Content $LogFileName
$scriptError = $true
}
}
function CreateSite($listItem, $web)
{
$Site_Title = ""
$Site_Description = ""
$Site_URL = ""
$Template_Type = ""
$Template_Name = ""
$Primary_Administrator = ""
$Secondary_Administrator = ""
$Quota = ""
$language=""
$Site_Type = ""
$Site_UnitDept = ""
$Site_OwnCountry = ""
$Site_BusinessImpact = ""
$Site_Expirydate = ""
$Site_HasConfidentialInfo = ""
$Site_IPPProtected = ""
$Site_LegalData = ""
$Site_FuncArea = ""
$Site_isEPDP = ""
$scriptError = $false
if ([string]$listItem["Site Title"] -ne $null) {
$Site_Title = $listItem["Site Title"]
}
if ([string]$listItem["Site Description"] -ne $null) {
$Site_Description = $listItem["Site Description"]
}
if ([string]$listItem['Full URL'] -ne $null) {
$Site_URL = $listItem['Full URL']
}
if (($listItem["sharepointsite Standard template"] | Out-String) -ne $null) {
if ([System.Convert]::ToBoolean($listItem["sharepointsite Standard template"]) -eq $true) {
$Template_Type = "Standard" }
else {
$Template_Type = "User Defined" } }
if ([string]$listItem["Site Type"] -ne $null) {
if ([string]$listItem["Site Type"] -eq "Teams") {
$Template_Name = "Team Site" }
elseif ([string]$listItem["Site Type"] -eq "Projects") {
$Template_Name = "Project Site" }
elseif ([string]$listItem["Site Type"] -eq "Community") {
$Template_Name = "Community Site" }
elseif ([string]$listItem["Site Type"] -eq "Wiki") {
$Template_Name = "Enterprise Wiki" }
#elseif ([string]$listItem["Site Type"] -eq "Blogs") {
#$Template_Name = "Blog"; }
else {
$Template_Name = "" }
}
if (-not [system.string]::IsNullOrEmpty($listItem["Primary Owner"])) {
$Primary = New-Object Microsoft.SharePoint.SPFieldUserValue($web, [system.string]$listItem["Primary Owner"])
$Primary_Administrator = $Primary.User.UserLogin
}
if (-not [system.string]::IsNullOrEmpty($listItem["Secondary Owner"])) {
$Secondary = New-Object Microsoft.SharePoint.SPFieldUserValue($web, [system.string]$listItem["Secondary Owner"])
$Secondary_Administrator = $Secondary.User.UserLogin
}
if ([system.string]$listItem["Site Quota"] -ne $null) {
$Quota = [system.string]$listItem["Site Quota"];
}
if ([system.string]$listItem["LCID"] -ne $null) {
$language = if([system.string]$listItem["LCID"] -eq "") { [system.string]$listItem["LCID"] } else { "1033" }
}
else {
$language = "1033" }
if ([system.string]$listItem["Site Type"] -ne $null)
{
$Site_Type = [system.string]$listItem["Site Type"];
if ([system.string]$listItem["Site Type"] -eq "Teams") {
$Site_Type = "Team" }
elseif ([system.string]$listItem["Site Type"] -eq "Projects") {
$Site_Type = "Project"
}
elseif ([system.string]$listItem["Site Type"] -eq "Blogs") {
$Site_Type = "Blog"
}
}
if (([system.string]$listItem["Owning Unit"] -ne $null) -and ([system.string]$listItem["Owning Department"] -ne $null)) {
$Site_UnitDept = [system.string]$listItem["Owning Unit"] + "." + [system.string]$listItem["Owning Department"] }
if ([system.string]$listItem["Country"] -ne $null) {
if ([system.string]$listItem["Country"] -ne "Other") {
$Site_OwnCountry = [system.string]$listItem["Country"] }
elseif ([system.string]$listItem["Other Country"] -ne $null) {
$Site_OwnCountry = [system.string]$listItem["Other Country"] }
if ([system.string]$listItem["Business Impact"] -ne $null) {
$Site_BusinessImpact = [system.string]$listItem["Business Impact"] }
else {
$Site_BusinessImpact = "Low" }
if ([system.string]$listItem["Site Expiration Date"] -ne "") {
$Site_Expirydate = ([system.string]$listItem["Site Expiration Date"]).Substring(0, ([system.string]$listItem["Site Expiration Date"]).IndexOf(" ")) }
if ([system.string]$listItem["Confidential Info"]-ne $null) {
$Site_HasConfidentialInfo = if ([System.Convert]::ToBoolean($listItem["Confidential Info"]) -eq $true) { "1" } else { "0" }
}
else {
$Site_HasConfidentialInfo = "0" }
if ([system.string]$listItem["IPP Protected"]-ne $null) {
$Site_IPPProtected = if ([System.Convert]::ToBoolean($listItem["IPP Protected"]) -eq $true) { "1" } else { "0" }
}
else {
$Site_IPPProtected = "0"
}
if ([system.string]$listItem["Is Legal Data"]-ne $null) {
$Site_LegalData = if ([System.Convert]::ToBoolean($listItem["Is Legal Data"]) -eq $true) { "1" } else { "0" }
}
else {
$Site_LegalData = "0"
}
if ([system.string]$listItem["Functional Area"] -ne $null) {
$Site_FuncArea = [system.string]$listItem["Functional Area"]
}
else {
$Site_FuncArea = "";
}
if ([system.string]$listItem["Site Type"] -ne $null) {
$Site_isEPDP = if([system.string]$listItem["Custom Site Template"] -eq "EPDP") { "1" } else { "0"}
}
else {
$Site_isEPDP = "0"
}
if ([system.string]$listItem["EPDP Program Manager"] -ne $null) {
$Site_EPDPprogramManager = New-Object Microsoft.SharePoint.SPFieldUserValue($web,[system.string]$listItem["EPDP Program Manager"]).User;
}
else {
$Site_EPDPprogramManager = $null;
}
if ([system.string]$listItem["EPDP Project Phase"]-ne $null) {
$Site_EPDPprojectPhase = [system.string]$listItem["EPDP Project Phase"]
}
else {
$Site_EPDPprojectPhase = ""
}
if ([system.string]$listItem["EPDP Product Structure"]-ne $null) {
$Site_EPDPproductStructure = [system.string]$listItem["EPDP Product Structure"]
}
else {
$Site_EPDPproductStructure = ""
}
# "Setting Site Template"
$parsedSiteTemplate = Get-SPWebTemplate | where-object {($_.Title -eq "Blank Site") -and ($_.LocaleId -eq $language)}
$parsedSiteTemplateName = $parsedSiteTemplate.Name
# "Setting Quota Template"
$Quota = $Quota.Replace(" ","")
$Quota = "quota_$Quota"
$contentService =[Microsoft.SharePoint.Administration.SPWebService]::ContentService
foreach ($quotaTemplate in $contentService.QuotaTemplates | ? {$_.Name.StartsWith("$Quota")} | % {$parsedQuotaTemplate = $_}) {}
# "Creating site collection..."
try {
if ($listItem["Status"] -eq "Approve Encrypted")
{
# Get DB Name first time, if the selected content database has not available space for sites, access another content database
if (([system.string]::IsNullOrEmpty($global:dbName)) -or ($global:dbAllowSitesCount -eq 0))
{
GetEncryptedDBName
}
if($global:dbName -ne "" -and $global:dbName -ne $null)
{
$global:dbAllowSitesCount = $global:dbAllowSitesCount - 1
New-SPSite -Url $Site_Url -Name $Site_Title -Description $Site_Description -ContentDatabase $global:dbName -OwnerAlias $Primary_Administrator -SecondaryOwnerAlias $Secondary_Administrator -QuotaTemplate $parsedQuotaTemplate -Language $language -ErrorAction Stop
}
}
else
{
New-SPSite -Url $Site_Url -Name $Site_Title -Description $Site_Description -OwnerAlias $Primary_Administrator -SecondaryOwnerAlias $Secondary_Administrator -QuotaTemplate $parsedQuotaTemplate -Language $language -ErrorAction Stop
}
}
catch [Exception]
{
$scriptError = $true
"{0},{1}" -f $listItem['Full URL'], "`nError in creating site collection.`n" + " Exception - " + $_.Exception.Message + "`n" |Add-Content $LogFileName
$global:URLsinError = $global:URLsinError + $listItem['Full URL'] + "; ";
#exit
}
if ($scriptError -eq $false) {
if ($listItem["sharepointsite Standard template"] -ne $null) {
if ($listItem["sharepointsite Standard template"] -eq $false -and $listItem["Full URL"] -ne $null)
{
SetGroupsForSite $Site_URL
ProvisioningCustomTemplateSites $web $listItem
UpdateCustomSiteMetadata $listItem $web
}
$listItem["Status"] = "Completed";
$listItem.Update();
}
else
{
$scriptError = $true
"{0},{1}" -f $listItem['Full URL'], "There is some error while creating site for the URL." |Add-Content $LogFileName
$global:URLsinError = $global:URLsinError + $listItem['Full URL'] + "; ";
}
"{0},{1}" -f $listItem['Full URL'], "The site is created successfully." |Add-Content $LogFileName
}
}
}
function SetGroupsForSite ($Site_URL)
{
$site = Get-SPSite $Site_Url
$rootWeb = $site.RootWeb
# "Creating default groups..."
$rootWeb.AssociatedVisitorGroup = $null
$rootWeb.Update()
$rootWeb.CreateDefaultAssociatedGroups($Primary_Administrator, $Secondary_Administrator, $Site_Title)
$rootWeb.Update()
# "Setting access request values..."
$rootWeb.RequestAccessEmail = $site.Owner.Email
$rootWeb.Update()
Enable-SPFeature -identity "ccf46f39-b9f4-4f9b-8d11-54286c42aaaa" -URL $Site_URL
Enable-SPFeature -identity "67b14c35-627a-4e09-8a2c-d69be020bbbb" -URL $Site_URL
Enable-SPFeature -identity "23c8a91c-c553-4b97-8fe3-f53e9f73cccc" -URL $Site_URL
}
function ProvisioningCustomTemplateSites($RequestWeb, $listItem)
{
## Provisioning the Custom Template.
## Blank Site is created by the script for cases where User Defined Template is selected.
## This method provisions User Defined Template to the blank site.
## It also ensures that all the features of that user defined template are activated.
try {
$site = $listItem['Full URL']
$myNewBlankSite = Get-SPSite $site
$myNewBlankWeb = Get-SPWeb $site
$requestedTempalte = [System.String]($listItem["Custom Site Template"]);
if (($requestedTempalte.Equals("Wiki")) -ne $true)
{
##Get the WSP File
$TempllistItem = $RequestWeb.Lists["User Defined Site Templates"]
foreach($tmp in $TempllistItem.Items)
{
if ($tmp["Title"] -eq $listItem["Custom Site Template"])
{
$tmpWspName = $tmp["Name"]
}
}
$sourceSolutionFile = $RequestWeb.GetFile("User Defined Site Templates/" + $tmpWspName.Trim())
## Get the Solution Gallery for the SPSite
$solutionGallery = $myNewBlankSite.GetCatalog([Microsoft.SharePoint.SPListTemplateType]::SolutionCatalog);
## Add the WSP File
$solutionFile = $solutionGallery.RootFolder.Files.Add($sourceSolutionFile.Name, $sourceSolutionFile.OpenBinary())
do
{
Start-Sleep -Seconds 5;
try
{
$testsolution = Get-SPUserSolution -Identity $sourceSolutionFile.Name -Site $myNewBlankSite
}
catch {
"{0},{1}" -f $listItem['Full URL'], "`nError in getting user defined solution.`n" + "Exception - " + $_.Exception.Message + "`n" |Add-Content $LogFileName
}
}
while(!$testsolution);
## Activate Solution
Install-SPUserSolution -Identity $sourceSolutionFile.Name -Site $myNewBlankSite
Start-Sleep -Seconds 5;
## Ensuring proper activation of all features of the Custom Template Solution- Important - Get updated site object
$newsite = Get-SPSite -Identity $site
$spFeatureColl = $newsite.Features
foreach ($spFeature in $spFeatureColl)
{
$feature = $spFeature.Definition
if(($feature.SolutionId -eq $testsolution.SolutionId) -and ($feature.Scope -eq [Microsoft.Sharepoint.SPFeatureScope]:: Site))
{
$siteFeature = Get-SPFeature -Site $newsite.Url -Identity $feature.Id -ErrorAction SilentlyContinue
if ($siteFeature -ne $null) {
Enable-SPFeature -Identity $feature.Id -Url $newsite.Url
}
}
}
Start-Sleep -Seconds 20;
#**Selecting the Custom Template for the UPDATED Site Object
$newsite = Get-SPSite -Identity $site
$templatename = $tmpWspName -replace ".wsp", ""
$loc = [System.Int32]::Parse(1033)
$webTemplate = $newsite.GetWebTemplates($loc)
foreach($temp in $webTemplate | ? {$_.Title -eq $templatename.Trim()} | % {$newsite.RootWeb.ApplyWebTemplate($_.Name)})
{}
}
else
{
$myNewBlankSite.RootWeb.ApplyWebTemplate("WIKI#0")
}
}
catch [Exception]{
"{0},{1}" -f $listItem['Full URL'], "`nError setting user template .`n" + "Exception - " + $_.Exception.Message + "`n" |Add-Content $LogFileName
}
}
function UpdateCustomSiteMetadata($listItem, $web)
{
try
{
$site = $listItem['Full URL']
$NewCreatedSite = Get-SPSite $site
$NewCreatedWeb = $NewCreatedSite.RootWeb;
############### Initial values - START
$NewCreatedWeb.AllProperties["__category_key__"] = $Site_Type
$NewCreatedWeb.AllProperties["__isEPDP_key__"] = $Site_isEPDP
if (-not [system.string]::IsNullOrEmpty($Site_EPDPprogramManager))
{
$NewCreatedWeb.AllProperties["__EPDPprogramManager_key__"] = $Site_EPDPprogramManager
}
if (-not [system.string]::IsNullOrEmpty($Site_EPDPprojectPhase))
{
$NewCreatedWeb.AllProperties["__EPDPprojectPhase_key__"] = $Site_EPDPprojectPhase
}
if (-not [system.string]::IsNullOrEmpty($Site_EPDPproductStructure))
{
$NewCreatedWeb.AllProperties["__EPDPproductStructure_key__"] = $Site_EPDPproductStructure
}
#$NewCreatedWeb.AllProperties["__legal_data_key__"] = $Site_LegalData
$NewCreatedWeb.Update()
############### Initial Values - END
$Site_UnitDept = ""
$Site_OwnCountry = ""
$Site_BusinessImpact = ""
$Site_Expirydate = ""
$Site_HasConfidentialInfo = ""
$Site_IPPProtected = "0"
$Site_LegalData = "0"
$Site_FuncArea = ""
$Site_isEPDP = "0"
$Site_EPDPprogramManager = $null;
$Site_EPDPprojectPhase = ""
$Site_EPDPproductStructure = ""
if ([String]($listItem["Owning Unit"]) -ne $null -and [String]($listItem["Owning Department"]) -ne $null) {
$Site_UnitDept = [String]($listItem["Owning Unit"]) + "." + [String]($listItem["Owning Department"]);
}
if ([String]($listItem["Country"]) -ne $null)
{
if ([String]($listItem["Country"]) -ne "Other")
{
$Site_OwnCountry = [String]($listItem["Country"]);
}
elseif ([String]($listItem["Other Country"]) -ne $null)
{
$Site_OwnCountry = [String]($listItem["Other Country"]);
}
}
if ([String]($listItem["Business Impact"]) -ne $null) {
$Site_BusinessImpact = [String]($listItem["Business Impact"]); }
else {
$Site_BusinessImpact = "Low" }
if ([String]($listItem["Site Expiration Date"]) -ne $null) {
$Site_Expirydate = ([system.string]$listItem["Site Expiration Date"]).Substring(0, ([system.string]$listItem["Site Expiration Date"]).IndexOf(" "))
}
if ([String]($listItem["Confidential Info"]) -ne $null) {
$Site_HasConfidentialInfo = if ([System.Convert]::ToBoolean($listItem["Confidential Info"]) -eq $true) { "1" } else { "0" }
} else {
$Site_HasConfidentialInfo = "0"
}
if ([String]($listItem["IPP Protected"]) -ne $null) {
$Site_IPPProtected = if ([System.Convert]::ToBoolean($listItem["IPP Protected"]) -eq $true) { "1" } else { "0" }
}
else {
$Site_IPPProtected = "0" }
if ([String]($listItem["Is Legal Data"]) -ne $null) {
$Site_LegalData = if ([System.Convert]::ToBoolean($listItem["Is Legal Data"]) -eq $true) { "1" } else { "0" }
} else {
$Site_LegalData = "0" }
if ([String]($listItem["Functional Area"]) -ne $null) {
$Site_FuncArea = [String]($listItem["Functional Area"]);
} else {
$Site_FuncArea = "" }
if ([String]($listItem["Site Type"]) -ne $null) {
$Site_isEPDP = if ([String]($listItem["Custom Site Template"]) -eq "EPDP") { "1" } else { "0" }
} else {
$Site_isEPDP = "0" }
if ([String]($listItem["EPDP Program Manager"]) -ne $null) {
$Site_EPDPprogramManager = New-Object Microsoft.SharePoint.SPFieldUserValue($web, [String]($listItem["EPDP Program Manager"])).User;
} else {
$Site_EPDPprogramManager = $null; }
if ([String]($listItem["EPDP Project Phase"]) -ne $null) {
$Site_EPDPprojectPhase = [String]($listItem["EPDP Project Phase"]);
} else {
$Site_EPDPprojectPhase = "" }
if ([String]($listItem["EPDP Product Structure"]) -ne $null) {
$Site_EPDPproductStructure = [String]($listItem["EPDP Product Structure"]);
} else {
$Site_EPDPproductStructure = "" }
$NewCreatedWeb.AllProperties["__division_key__"] = $Site_UnitDept;
$NewCreatedWeb.AllProperties["__country_key__"] = $Site_OwnCountry;
$NewCreatedWeb.AllProperties["__group_key__"] = $Site_BusinessImpact;
$NewCreatedWeb.AllProperties["__expiry_key__"] = $Site_Expirydate;
$NewCreatedWeb.AllProperties["__expiry1_key__"] = $Site_Expirydate;
$NewCreatedWeb.AllProperties["__category3_key__"] = $Site_HasConfidentialInfo;
$NewCreatedWeb.AllProperties["__category4_key__"] = $Site_IPPProtected;
$NewCreatedWeb.AllProperties["__area_key__"] = $Site_FuncArea;
if ($Site_isEPDP -eq "1")
{
$NewCreatedWeb.AllProperties["__isEPDP_key__"] = $Site_isEPDP;
$NewCreatedWeb.AllProperties["__EPDPprogramManager_key__"] = $Site_EPDPprogramManager.Name;
$NewCreatedWeb.AllProperties["__EPDPprojectPhase_key__"] = $Site_EPDPprojectPhase;
$NewCreatedWeb.AllProperties["__EPDPproductStructure_key__"] = $Site_EPDPproductStructure;
}
if ($Site_LegalData -eq "1")
{
$NewCreatedWeb.AllProperties["__legal_data_key__"] = $Site_LegalData;
}
$NewCreatedWeb.AllProperties["__reviewedBy_key__"] = ""
$NewCreatedWeb.AllProperties["__reviewedOn1_key__"] = ""
$NewCreatedWeb.Update();
}
Catch [exception]
{
# Logging the exception in log file
"{0},{1}" -f $listItem['Full URL'], $_.Exception.Message |Add-Content $LogFileName
}
}
function SendMail($web, $EmailTo, $Subject, $Body)
{
#
#Send an email from a SharePoint Web
#
[Microsoft.SharePoint.Utilities.SPUtility]::SendEmail($web, $false, $false, $EmailTo, $Subject, $Body);
}
function GetEncryptedDBName()
{
$connectionString = “Server=$server;Database=$database;Integrated Security=True;”
$global:dbName = ""
try
{
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$query =
“SELECT @@Servername, db.name, Case db.is_encrypted when '1' then 'Y' when '0' then 'N' else '0' end as Encrypted
FROM sys.databases db
LEFT OUTER JOIN sys.dm_database_encryption_keys dm
ON db.database_id = dm.database_id WHERE db.is_encrypted = '1'
”
$command = $connection.CreateCommand()
$command.CommandText = $query
$reader = $command.ExecuteReader();
while($reader.read() -and ([string]::IsNullOrEmpty($global:dbName)))
{
if ($reader["name"] -ne $null)
{
try
{
foreach($DB in get-spcontentdatabase | ? {$_.name -eq $reader["name"]})
{
if($DB.MaximumSiteCount -gt $DB.CurrentSiteCount)
{
#DB found, create site using the $DB.name
$global:dbName = $DB.name
$global:dbAllowSitesCount = ($DB.MaximumSiteCount) - ($DB.CurrentSiteCount)
break;
}
}
}
Catch [exception]
{
# Logging the exception in log file
"{0},{1}" -f "Error in method: GetEncryptedDBName(). DB Name - " + $reader["name"] + ". Exception - ", $_.Exception.Message |Add-Content $LogFileName
}
}
}
if([string]::IsNullOrEmpty($global:dbName))
{
# Logging the error message in log file
"{0},{1}" -f "Error in method: GetEncryptedDBName()", "No encrypted DB space available" |Add-Content $LogFileName
}
}
Catch [exception]
{
"{0},{1}" -f "Error in method: GetEncryptedDBName()", "SQL Can't read the Encrpted DB information" |Add-Content $LogFileName
}
finally
{
# Dispose the objects
$reader.close()
$connection.Close()
}
}
GetListItemsforSiteCreation