gpt4 book ai didi

sharepoint-2010 - 无法删除未引用的网站栏

转载 作者:行者123 更新时间:2023-12-03 23:37:02 25 4
gpt4 key购买 nike

我刚刚创建了几个通过 VS2010 引用它们的网站栏和内容类型。我更新了其中一个字段,然后尝试重新部署,但撤回后,部署失败,因为之前创建的网站栏仍然存在。我尝试从用户界面手动删除它们,并收到一个带有以下消息的警告框:

Site columns which are included in content types cannot be deleted. Remove all references to this site column prior to deleting it.

我在 SharePoint Manager 中进行了深入研究,没有找到任何引用,因此我使用 powershell 枚举所有内容类型和列表,以查找对我的网站栏的引用,但什么也没找到。

我尝试使用 PowerShell 进行删除,如下所示:

$web.Fields.Delete("StartTime")

这导致了这个错误:

Exception calling "Delete" with "1" argument(s): "Site columns which are included in 
content types or on lists cannot be deleted. Please remove all instances of this site
column prior to deleting it."
At line:1 char:19
+ $web.Fields.Delete <<<< ("StartTime")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

最后,对 PowerShell 中的列进行简单检查后会显示以下内容:

Title                               Id                                                         CanBeDeleted ParentList                                                       Sealed ListsFieldUsedIn                   
----- -- ------------ ---------- ------ ----------------
Start Time OBE 6fa0d85b-9af1-408b-835f-d4c66536... True False {}
Time Tracker Tags 92bc866b-0415-45f0-b431-d4df69c4... True False {}

我对 MOSS 2007 有经验,对 SP2010 很陌生,但我以前从未见过这种情况发生。有人有任何提示吗?

最佳答案

您需要查找并删除使用网站栏的内容类型以及使用您尝试删除的网站栏的任何列表或库。使用 PowerShell 来获取网站栏对象,如下所示:

 $column = $web.Fields[“Column Display Name”]

然后找到所有使用它的地方,使用如下内容:

$column.ListsFieldUsedIn()

它会输出使用此内容类型的每个位置的两个 GUID - WebIDListID

下面是一个 PowerShell 脚本,它循环遍历从 ListFieldUsedIn() 返回的所有列表 GUID,然后查找与该 GUID 匹配的子网站和列表,并打印出每次使用的列表名称和子网站 URL:

$site = Get-SPSite "http://sharepoint"
$rootweb = $site.rootweb
$siteColumnToRemove = "Column Display Name”
$sc = $rootweb.Fields[$siteColumnToRemove]
if ($sc)
{
write-host " Found Site Column '" $sc.Title "' in gallery" -ForegroundColor Gray
foreach( $listusage in $sc.ListsFieldUsedIn() )
{
$listID = $listusage.ListID
foreach ($subweb in $site.allwebs)
{
foreach ($list in $subweb.lists)
{
if ($list.ID -eq $listID)
{
write-host " Site Column '" $sc.Title "' used in list '" $list.Title "' in site '" $subweb.Url "'" -BackgroundColor Yellow -ForegroundColor Black
}
}
}
}
}

关于sharepoint-2010 - 无法删除未引用的网站栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com