请尝试这种方法,在我的情况下它返回了正确的列表模板
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;
让我知道是否有任何帮助
* 更新 *
这是一个从网络获取所有模板的小脚本
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”,第二个使用值“temp2”,依此类推。之后,您可以检查从列表中获得的模板是否始终具有相同的描述。可能会是一样的,如果是,那么我的下一个方法是尝试更新 featureId,但请注意,这不是推荐的方法,并且可能会产生一些错误。
您还可以检查列表中的 SPExport 和 SPImport 以尝试导出这些列表并将它们导入某些开发环境并尝试在那里解决此问题。