Friday, October 19, 2012

Powershell script that will create a site

$Web = $ARGS[0]
$NewSiteName = $ARGS[1]
$SiteCollectionTemplate = "STS#0"
$SiteCollectionLanguage = "1033"
$PageLayout = "CHA_BlankWebPartPage.aspx"
$HomepageName = "home.aspx"
$SiteUrl = $Args[0] + "/" + $NewSiteName
#Create the new site
$SPWeb = Get-SPWeb -Identity $Web
New-SPWeb $SiteUrl -Template $SiteCollectionTemplate -Name $NewSiteName -UseParentTopNav -Language $SiteCollectionLanguage
$SPWeb = Get-SPWeb -Identity $SiteUrl
#Turn on Publishing features and create home.aspx in the Pages Library
Enable-SPFeature -Identity PublishingWeb -URL $SiteUrl
$pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($SPWeb)
$pl = $pubWeb.GetAvailablePageLayouts() | Where { $_.Name -eq $PageLayout }
$newPage = $pubWeb.AddPublishingPage($HomepageName,$pl)
$newPage.Update()

#Set the Homepage to Home.aspx
$rootfolder = $SPWeb.RootFolder
$rootFolder.WelcomePage = "Pages/Home.aspx"
$rootFolder.Update()
#Delete unneeded lists
$Guids = @()
foreach ($List in $SPWeb.lists){
 if($List.title -eq "Announcements"){$Guids += $List.id}
 if($List.title -eq "Tasks"){$Guids += $List.id}
 if($List.title -eq "Shared Documents"){$Guids += $List.id}
 if($List.title -eq "Site Assets"){$Guids += $List.id}
 if($List.title -eq "Site Pages"){$Guids += $List.id}
 if($List.title -eq "Team Discussion"){$Guids += $List.id}
}
foreach($element in $Guids){
 try{
  $SPWeb.Lists.Delete($element)
 }
 catch [Exception]{
  write-host "ERROR DELETING LIST: GUID"$element
  write-host "MESSAGE RETURN: "$_.Exception.Message
 }
}
#Add Webparts to the homepage
$ChromeType =[System.Web.UI.WebControls.WebParts.PartChromeType]::TitleOnly
$OpenWeb = Get-SPWeb $SiteUrl
$HomepagePath = "$SiteURL/pages/" + $HomepageName + "?PageView=Shared"
write-host $HomepagePath
$WebPartManager  = $OpenWeb.GetLimitedWebPartManager($HomepagePath, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

#CALENDAR
$List = "Calendar"
$Zone = "Footer"
$OpenList = $OpenWeb.Lists[$List]
$ListViewWebPart = New-Object Microsoft.SharePoint.WebPartPages.ListViewWebPart
$ListViewWebPart.Title = $List
$ListViewWebPart.ListName = ($OpenList.ID).ToString("B").ToUpper()
$ListViewWebPart.ViewGuid = ($OpenList.DefaultView.ID).ToString("B").ToUpper()
$ListViewWebPart.ZoneID = $Zone
$ListViewWebPart.ChromeType = $ChromeType
$WebPartManager.AddWebPart($ListViewWebPart,$Zone,$Index)
#LINKS
$List = "Links"
$Zone = "TopRightRow"
$OpenList = $OpenWeb.Lists[$List]
$ListViewWebPart = New-Object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart
$ListViewWebPart.Title = $List
$ListViewWebPart.ListName = ($OpenList.ID).ToString("B").ToUpper()
$ListViewWebPart.ViewGuid = ($OpenList.DefaultView.ID).ToString("B").ToUpper()
$ListViewWebPart.ZoneID = $Zone
$ListViewWebPart.ChromeType = $ChromeType
$WebPartManager.AddWebPart($ListViewWebPart,$Zone,$Index)
#Documents
$List = "Documents"
$Zone = "TopLeftRow"
$OpenList = $OpenWeb.Lists[$List]
$ListViewWebPart = New-Object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart
$ListViewWebPart.Title = $List
$ListViewWebPart.ListName = ($OpenList.ID).ToString("B").ToUpper()
$ListViewWebPart.ViewGuid = ($OpenList.DefaultView.ID).ToString("B").ToUpper()
$ListViewWebPart.ZoneID = $Zone
$ListViewWebPart.ChromeType = $ChromeType
$WebPartManager.AddWebPart($ListViewWebPart,$Zone,$Index)
#Check in the page
$newPage.CheckIn("")
$newPage.ListItem.File.Publish("")
$OpenWeb.Dispose()

No comments:

Post a Comment