使用powershell将sharepoint基础母版页应用于所有网站

时间:2011-04-04 03:19:23

标签: powershell sharepoint-2010

我正在尝试将自定义母版页应用于sharepoint环境中的所有网站,并按照

的方式进行思考
  1. http://sharepoint/
  2. http://sharepoint/site1
  3. http://sharepoint/site1/1
  4. http://sharepoint/site2/1
  5. 我希望能够使用powershell将自定义母版页应用于每个网站。我知道使用

    $web = Get-SPWeb http://sharepoint 
    $web.CustomMasterUrl = "/_catalogs/masterpage/custom_v4.master" 
    $web.Update()
    

    请有人帮助所有网站的循环。

3 个答案:

答案 0 :(得分:0)

您需要将网址数组管道传输到Foreach-Object

'http://sharepoint/',
'http://sharepoint/site1',
'http://sharepoint/site1/1',
'http://sharepoint/site2/1' | Foreach-Object {
  $web = Get-SPWeb $_
  $web.CustomMasterUrl = "/_catalogs/masterpage/custom_v4.master" 
  $web.Update()
}

或以命令式的方式做:

$urls = 'http://sharepoint/', 'http://sharepoint/site1', 'http://sharepoint/site1/1', 'http://sharepoint/site2/1'

foreach($url in $urls) {
  $web = Get-SPWeb $url
  $web.CustomMasterUrl = "/_catalogs/masterpage/custom_v4.master" 
  $web.Update()
}

答案 1 :(得分:0)

如果要将master应用于整个网站集,请尝试此操作:

foreach ($site in get-spsite -url http://sharepoint*) {

     $web = Get-SPWeb $site
     $web.CustomMasterUrl = "/_catalogs/masterpage/custom_v4.master" 
     $web.Update()

}

有关get-spsite的更多信息,您可以在sharepoint automation阅读此帖子。希望有所帮助!

答案 2 :(得分:0)

我不会依赖网站的简单网址定位。我想你想要的是这个:

$site = Get-SPSite "http://localhost"
$site.AllWebs | foreach-object { `
               $_.CustomMasterUrl = "/_catalogs/masterpage/custompagename.master";    
               $web.Update()
}

AllWebs属性返回网站集中的所有网站。如果您确实使用了变体,您可能希望将它们从列表中排除某些某种方式使用?{$ _。Name -like'en-us'}并在foreach管道之前管道。