0

我们在共享点中创建了一些列表模板,并使用列表模板创建了列表。这是示例,

列表模板

  1. 列表模板1
  2. 列表模板2
  3. 列表模板3

以下方式创建的列表,

List1 使用 ListTemplate1 创建
List2 使用 ListTemplate2
创建 List3 使用 ListTemplate3 创建

后来用户使用 ListTemplate1 创建了 List4,

现在我们正在尝试识别哪个列表是由哪个模板创建的。但是我们无法正确识别 listtemplate。它总是以 ListTemplate1 出现在少数站点集合中,ListTemplate2 是少数站点集合

谁能帮我获得正确的列表模板名称列表?

下面是我用来获取特定列表的列表模板的 Powershell 代码。

$sourceWebURL = "WebUrl"
$sourceListName = "listname"

$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$spSourceList.TemplateFeatureId
4

2 回答 2

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;

让我知道是否有任何帮助

* 更新 * 这是一个从网络获取所有模板的小脚本



     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 以尝试导出这些列表并将它们导入某些开发环境并尝试在那里解决此问题。

于 2019-06-24T22:36:48.397 回答
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
于 2019-06-25T02:39:10.337 回答