有没有办法在MOSS2007中将标题列表字段全局更改回“标题”

时间:2010-11-11 09:20:19

标签: sharepoint sharepoint-2007

每个SharePoint开发人员的生活迟早都会对内容类型感到愚蠢,并重命名Item基类型中的Title字段。这有两个影响:

  • 所有新列表都使用新名称而不是“标题”。
  • 网站集中的所有列表都重命名了标题字段。

现在,我已经将项目内容类型设置为OK,但是我仍然遇到数百个(如果不是数千个)列表,这些列表现在有一个名为“Publication Title”的字段,我想将其更改为'标题'。

经过一些谷歌搜索后,我很快就熟悉了PowerShell,并准备了一个脚本来遍历网站集并重命名所有标题字段。

但我确信我不是第一个这样做的人,我确信我不是第一个想到这个解决方案的人。任何人都有一些代码可以解决这个问题吗?

哦,是的,这是在生产农场。哈哈。

1 个答案:

答案 0 :(得分: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”。修改品尝。