2014-05-23 28 views
0

我试图从Sharepoint 2010文档库中删除密封的字段。有问题的领域最初是默认的Sharepoint标题字段,后来被重新命名。我在SharePoint命令行管理程序,但是当我尝试更新Sealed属性设置为false,我得到了以下错误消息:Sharepoint - 无法将密封属性设置为False

例外设置“密封”:“操作是无效的,由于当前状态的对象。“

请注意,我能够使用相同的方法在同一列表中成功解封不同的字段。

下面是完整的一组命令我使用:

$web = Get-SPweb("myurl") 
$list = $web.Lists["mylist"] 
$field = $list.Fields["column to delete"] 
$field.AllowDeletion = $true 
$field.Sealed = $false -->Here's where I get the error 

如果我能更新Sealed财产,我会继续与以下内容:

$field.Delete() 
$list.Update() 
$web.Dispose() 

是否有任何其他属性,我需要更改以更新Sealed?标题字段是否受到唯一保护?

回答

0

下面是关于密封的目的片段:

有时候,你要绝对确保其他人无法进去,并通过Windows SharePoint Services的用户界面改变你的内容类型。如果管理员删除或重命名内容类型中的列,可能会导致各种问题,因为可能会或可能不会将子类型转化为子类型。您可能还希望确保仅通过使用功能和CAML创建/修改内容类型。为了解决这个问题,内容类型可以被标记为密封,并且只能通过对象模型被标记为密封。这样可以防止通过用户界面对内容类型进行随意更改。

http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/11/how-to-seal-a-content-type.aspx

enter link description here

0

我解决这类与此代码的问题(我们直接更新领域的XML Schema):

$web = Get-SPWeb http://my-web-url 
$list = $web.Lists["myList"] 
$field = $list.Fields.GetFieldByInternalName("myField") 
$fxml = [xml]$field.SchemaXml 
$fxml.Field.Sealed = "FALSE" 
$field.SchemaXml = $fxml.InnerXml 
$field.Update(); 
$web = Get-SPWeb http://my-web-url 
$list = $web.Lists["myList"] 
$field = $list.Fields.GetFieldByInternalName("myField") 
$field.Sealed = $false; 
$field.Update(); 

也许在你的情况,你应该也更新Web场。

相关问题