我们在共享点中创建了一些列表模板,并使用列表模板创建了列表。这是示例,
ListTemplates
按照以下方式创建的列表,
List1是使用ListTemplate1创建的
List2是使用ListTemplate2创建的
List3是使用ListTemplate3创建的
后来用户使用ListTemplate1创建了List4,
现在,我们正在尝试确定哪个模板由哪个模板创建。但是我们无法正确识别列表模板。它总是在少数网站集合中作为ListTemplate1出现,而ListTemplate2是少数网站集合
有人可以帮助我获取列表的正确列表模板名称吗?
下面是我用来获取特定列表的列表模板的Powershell代码。
$sourceWebURL = "WebUrl"
$sourceListName = "listname"
$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spSourceList.TemplateFeatureId
答案 0 :(得分:0)
请尝试这种方法,就我而言,它返回了正确的列表模板
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "Microsoft.SharePoint.PowerShell";
}
$_URL = "URL";
$SPWeb = Get-SPWeb $_URL;
$SPList = $SPWeb.Lists["LIST_NAME"];
$listTemplate = $SPWeb.ListTemplates | ? {$_.FeatureId -eq $SPList.TemplateFeatureId};
$listTemplate.Name;
$listTemplate.FeatureId;
让我知道是否有帮助
*更新* 这是一个小脚本,可以从Web获取所有模板
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "Microsoft.SharePoint.PowerShell";
}
$_URL = "[URL]";
$SPWeb = Get-SPWeb $_URL;
foreach($templates in $SPWeb.ListTemplates){
$templates.Name;
$templates.FeatureId;
$templates.InternalName;
$templates.SchemaXml;
}
您可以做的是检查这3个模板的属性是否不存在(检查其他道具,不仅检查我在脚本中提到的道具,还可以始终检查$ tempplate对象以获取全部道具)是否不同。也许FeatureId相同,但是还要检查SchemaXml中的featureId,也许有所不同。如果所有属性都相同,您可以为第一个模板使用此featureId(例如'temp1')更新第二个模板的'description'属性,并使用值'temp2'更新第二个模板,以此类推。之后,您可以检查从列表中获取的模板是否始终具有相同的描述。可能是一样的,如果是,那么我的下一个方法是尝试更新featureId,但是请注意,这不是推荐的方法,并且可能会产生一些错误。也许更好的主意是尝试在某些开发环境中重现该错误,然后尝试通过更改featureId修复该错误。
还可以检查列表中的SPExport和SPImport,以尝试导出这些列表并在某些开发环境中将其导入,并尝试在那里解决此问题。
答案 1 :(得分:0)
示例脚本以获取模板名称供您参考。
$sourceWebURL = "http://sp10/"
$sourceListName = "ListBasedonTemplate1"
$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spSourceList.TemplateFeatureId
$listTemplate=$spSourceWeb.Site.GetCustomListTemplates($spSourceWeb) | ? {$_.FeatureId -eq $spSourceList.TemplateFeatureId}
$listTemplate[0].Name