有鑑於 Sharepoint建網站的UI太友善了,讓要建多個網站的管理員會非常熟悉建站的動作跟設定,因此小弟到蒐集網路上各種建站的Powershell,東拼西湊成一個建多個站的Powershell:
1.如果有自訂的web template,則需要找出ID跟Name,可用:
查詢出的結果會類似
{2F1B367A-5FF5-444E-B3BC-DBB73E1FEDXX}#SiteTemplateName SiteTemplate_Title
只需要用到前面的,Title只是用來識別的
2.create it!
以下的Powershell有包含以下步驟
(1).建立一個新的網站
(2).設定 "網站設定"的"其他語言",增加中文(1028)
(3).設定 "網站設定"的"覆寫翻譯"
(4).設定 "管理網站功能"的 "SharePoint Server Publishing"(為了master page)
(5).設定 Master Page
希望sharepoint後代多考慮管理員批次處理的功能,時間不是用來做重複的管理工作!
參考:
#DontLikeSP
1.如果有自訂的web template,則需要找出ID跟Name,可用:
#待修改 $url = "http://sps2010/" $site= new-Object Microsoft.SharePoint.SPSite($url ) $loc= [System.Int32]::Parse(1033) $templates= $site.GetWebTemplates($loc) foreach ($child in $templates) { write-host $child.Name " " $child.Title } $site.Dispose()
查詢出的結果會類似
{2F1B367A-5FF5-444E-B3BC-DBB73E1FEDXX}#SiteTemplateName SiteTemplate_Title
只需要用到前面的,Title只是用來識別的
2.create it!
以下的Powershell有包含以下步驟
(1).建立一個新的網站
(2).設定 "網站設定"的"其他語言",增加中文(1028)
(3).設定 "網站設定"的"覆寫翻譯"
(4).設定 "管理網站功能"的 "SharePoint Server Publishing"(為了master page)
(5).設定 Master Page
#待修改 $SiteCollectionURL = "http://sps2010" #待修改 $SiteCollectionTemplate = " {2F1B367A-5FF5-444E-B3BC-DBB73E1FEDXX}#SiteTemplateName " #預設語系英文 $SiteCollectionLanguage = 1033 #新站的URL $SubSites = @("UrlA", "UrlA", "UrlA", ) #新站的標題(Title) $SubSiteNames =@("TitleA", "TitleB", "TitleC", ) for($i=0 ; $i -lt $SubSites.count ; $i++) { #(1).建立一個新的網站,根據指定的範本與語系,描述則預設為空白 $SiteUrl = "" $SiteUrl = $SiteCollectionURL + "/" $SiteUrl = $SiteUrl += $SubSites[$i] $web=New-SPWeb $SiteUrl -Name $SubSiteNames[$i] -UseParentTopNav -Language $SiteCollectionLanguage -Description " "
#在我的環境,要再套用一次才會work, 不知道為什麼!
$web.ApplyWebTemplate($SiteCollectionTemplate) #(2).設定 "網站設定"的"其他語言",增加中文(1028) $web.IsMultilingual = $true $spReg = New-Object Microsoft.SharePoint.SPRegionalSettings $web #顯示安裝的language pack $spReg.InstalledLanguages $web.AddSupportedUICulture(1028) #(3).設定 "網站設定"的"覆寫翻譯" $web.OverwriteTranslationsOnChange = $true; #(4).設定 "管理網站功能"的 "SharePoint Server Publishing"(為了master page) Enable-SPFeature -identity "PublishingWeb" -URL $SiteUrl $web.Dispose() #Write-Output "完成: " += $SubSites[$i] } # #(5).設定 Master Page #因為需要web.update 所以分開執行 # for($i=0 ; $i -lt $SubSites.count ; $i++) { $SiteUrl = "" $SiteUrl = $SiteCollectionURL + "/" $SiteUrl = $SiteUrl += $SubSites[$i] $web = Get-SPWeb $SiteUrl $web.AllProperties["__InheritsCustomMasterUrl"] = "False"; #待修改 $web.CustomMasterUrl = "/_catalogs/masterpage/myv4.master" $web.AllProperties["__InheritsMasterUrl"] = "False"; #待修改 $web.MasterUrl = "/_catalogs/masterpage/myv4.master" $web.Update() $web.Dispose() }
希望sharepoint後代多考慮管理員批次處理的功能,時間不是用來做重複的管理工作!
參考:
- Create Web from Custom Template in SharePoint 2010 (PowerShell and STSADM) http://mkdot.net/mknetug/mk_sp/b/darko/archive/2011/02/17/create-web-from-custom-template-in-sharepoint-2010.aspx
- Powershell Script to create subsites within a site collection http://www.sharepointfix.com/2011/04/powershell-script-to-create-subsites.html
#DontLikeSP