Greetings - I'm looking for feedback/comments on a script to create a new managed path site collection with it's own content db in SharePoint 2013 SP1. The idea is to create a new site collection under our main "portal" web application. Each new site collection would have it's own content db (each client would have their own db). I am newish to PowerShell for SharePoint and am curious if the script contains any glaring flaws. I would also like comments as to the use of separate content dbs (pros / cons). Also if there are any better ways to accomplish the goal. Thanks!
$SiteName = Read-Host "Enter site collection name" $WebsiteDesc = Read-Host "Enter site collection description" $SiteCollectionTemplate = "STS#0" $SiteCollectionLanguage = 1033 $WebApplicationURL = "https://portal.company.com" $SiteRelativeURL = ("/" + $SiteName) $SiteFullURL = ($WebApplicationURL + $SiteRelativeURL) $SiteOwner1 = "DOMAIN\user1" $SiteOwner1Email = "user1@company.com" $SiteOwner1Display = "John Doe" $SiteOwner2 = "DOMAIN\user2" $SiteOwner2Email = "user2@company.com" $SiteOwner2Display = "Jane Doe" $DatabaseInstance = "SQLDatatbase" $ContentDatabasePrefix = "WSS_Content" $ContentDatabaseName = ($ContentDatabasePrefix + "_" + $SiteName) $OwnersGroup = ($SiteName +" Owners") $MembersGroup = ($SiteName +" Members") Write-Host " " Write-Host "Create New Manged Path" -ForegroundColor Yellow New-SPManagedPath -RelativeURL $SiteRelativeURL -WebApplication $WebApplicationURL -Explicit Write-Host " " Write-Host "New Managed Path " $SiteRelativeURL " has been created" -ForegroundColor Yellow Write-Host " " Write-Host "Create New Content Database " -ForegroundColor Yellow New-SPContentDatabase -Name $ContentDatabaseName -DatabaseServer $DatabaseInstance -WebApplication $WebApplicationURL Write-Host " " Write-Host "New Content Database created " $ContentDatabaseName -ForegroundColor Yellow Write-Host " " Write-Host "Create New Site Collection " -ForegroundColor Yellow New-SPSite -Name $SiteName –Description $WebsiteDesc -ContentDatabase $ContentDatabaseName -URL $SiteFullURL -Template $SiteCollectionTemplate -OwnerAlias $SiteOwner1 –OwnerEmail $SiteOwner1Email -SecondaryOwnerAlias $SiteOwner2 -SecondaryEmail $SiteOwner2Email Write-Host " " Write-Host "New Site Collection created " $SiteFullURL -ForegroundColor Yellow Write-Host " " Write-Host "Set Database MaxSite and Warning" -ForegroundColor Yellow Get-SPContentDatabase -Site $SiteFullURL | Set-SPContentDatabase -MaxSiteCount 1 -WarningSiteCount 0 Write-Host " " Write-Host "Create Defualt Groups - Assign Primary and Secondary Site Owners" -ForegroundColor Yellow $web = Get-SPWeb $SiteFullURL $web.CreateDefaultAssociatedGroups($SiteOwner1,$SiteOwner2,"") $PrimaryAdmin = Get-SPUser $SiteOwner1 -Web $SiteFullURL $PrimaryAdmin.Name = $SiteOwner1Display $PrimaryAdmin.Update() $SecondaryAdmin = Get-SPUser $SiteOwner2 -Web $SiteFullURL $SecondaryAdmin.Name = $SiteOwner2Display $SecondaryAdmin.Update() Write-Host " " Write-Host "Add Default Users Groups" -ForegroundColor Yellow New-SPUser -UserAlias "DOMAIN\DomainAdmins" -displayname "Domain Admins" -web $SiteFullURL -Group $OwnersGroup New-SPUser -UserAlias "DOMAIN\powerUser1" -displayname "Power User1" -Email "puser1@company.com" -web $SiteFullURL -Group $MembersGroup New-SPUser -UserAlias "DOMAIN\powerUser2" -displayname "Power User2" -Email "puser2@company.com" -web $SiteFullURL -Group $MembersGroup $web.Dispose() Write-Host " " Write-Host "Site Collection at " $SiteFullURL " has been created in the " $ContentDatabaseName " content database" -ForegroundColor Yellow Write-Host " " Write-Host "Script Complete!" -ForegroundColor Yellow