2010-11-11 58 views
2

每個SharePoint開發者的生活中早晚都會混淆內容類型並重命名項目基本類型中的標題字段。這有兩個作用:有沒有一種方法可以將標題列表字段全部更改回MOSS2007中的「標題」

  • 所有新列表都有新名稱而不是「標題」。
  • 網站集中的所有列表都會重命名其標題字段。

現在,我已經設置項目內容類型返回確定,但我堅持數百,如果不是成千上萬的列表,現在有一個名爲「出版物標題」的字段,我想改回'標題'。

經過一番Google搜索後,我很快熟悉PowerShell,並且正在準備腳本來遍歷網站集並重命名所有標題字段。

但我確定我不是第一個這樣做,我敢肯定我不是第一個想到這個解決方案的人。任何人都有一些代碼可以解決這個問題嗎?

哦,是的,這是在生產農場。哈哈。

回答

2

所以我想這是一個沒有......

我寫了一個PowerShell腳本,並重新命名:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null 

function global:Get-SPSite($url){ 
    return new-Object Microsoft.SharePoint.SPSite($url) 
} 

#Change these variables to your site URL and list name 
$siteColletion = Get-SPSite("http://go.snap-undp.org/focusareas/") 
$webs = $siteColletion.allwebs 

#Walk through each site in the site collection 
#use FOR loops because collections break when you update them 
for($webIndex=0;$webIndex -ne $webs.count;$webIndex++){ 
    #use this for output 
    $webTitle = $webs[$webIndex].title.toString() 
    "PROCESSING $webTitle" 

    #loop though each list in the current website 
    for($i=0;$i -ne $webs[$webIndex].lists.count;$i++){ 

     #this is used for output and to make the code a little more readable 
     $listTitle = $webs[$webIndex].lists[$i].toString() 

     #loop through each field in the lsit, looking for the offending name 
     foreach($field in $webs[$webIndex].lists[$i].fields){ 
      if($field.title -eq "Publication Title"){ 
       if($listTitle -eq "Participants" -or $listTitle -eq "User Account Request List"){ 
        $field.title = "Last Name" 
        "workshop update to $listTitle" 
       }else{ 
        $field.title = "Title" 
        "normal update to $listTitle" 
       } 
       #$field.Update() 
       break 
      } 
     } 
    } 
} 
#Dispose of the site object 
$siteColletion.Dispose() 

這是非常具體的。它會查找名爲「Publication Title」(錯誤名稱)的列,並將它們重命名爲Title,除非該列表被命名爲「Participants」,在這種情況下,它重命名爲「Last Name」。修改成品味。

相關問題