我一直在尝试使用PowerShell和网站功能来更新现有或以前存在的网站列(很多)。使用SharePoint Designer或C#代码添加网站列或无ID属性的$web.Fields.AddFieldAsXml
都可以正常工作。但是,因为必须为我的项目保留字段GUID,所以一旦我使用以前部署的GUID,SharePoint就会报告错误。
这是我使用PowerShell获取错误的方法:( ID是一个唯一值)
<Field
ID="{00000000-0000-0000-0000-000000000000}"
Name="CustomField"
DisplayName="Custom Field"
Type="Boolean"
Required="FALSE"
Overwrite="TRUE"
OverwriteInChildScopes="TRUE"
Group="Custom Columns">
</Field>
$web.Fields.AddFieldAsXml($xml)
Exception calling "AddFieldAsXml" with "1" argument(s): ""
At line:1 char:1
+ $web.Fields.AddFieldAsXml($xml)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SPException
但是,如果我删除ID属性或使用新ID,它将按预期创建列。
当我激活功能时会发生同样的情况。日志显示:
System.Runtime.InteropServices.COMException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)), StackTrace: at Microsoft.SharePoint.SPFieldCollection.FetchFieldsFromWeb()
Unable to locate the xml-definition for FieldName with FieldId '00000000-0000-0000-0000-000000000000', exception: Microsoft.SharePoint.SPException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) ---> System.Runtime.InteropServices.COMException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
我怀疑它是网站集中的损坏字段所以我删除了几个列,但现在我无法添加它们并更新内容类型 - 请帮助!
答案 0 :(得分:0)
我有一个可能相关的问题,我无法添加我以前删除过的列。
事实证明,这些已删除的列首先存储在站点回收站中。
清空该垃圾箱后,我仍然无法重新添加已删除的列。
这最终是由于已删除的列仍然存在于网站集回收站中。
请参阅:SP recycle bins
您的问题可能相关吗?