SharePoint 2010 - Как мы можем получить имя шаблона списка из списка, если список создается из ListTemplate - PullRequest
0 голосов
/ 24 июня 2019

Мы создали несколько шаблонов списков в sharepoint и создали списки с использованием шаблонов списков. Вот пример,

ListTemplates

  1. ListTemplate1
  2. ListTemplate2
  3. ListTemplate3

Списки, созданные следующим образом,

Список1 создается с помощью ListTemplate1
List2 создан с использованием ListTemplate2
List3 создан с использованием ListTemplate3

А позже пользователь создал List4, используя ListTemplate1,

Теперь мы пытаемся определить, какой список создан по какому шаблону. Но мы не смогли правильно определить шаблон списка. Он всегда появляется как ListTemplate1 в нескольких коллекциях сайтов, ListTemplate2 - это несколько семейств сайтов

Может ли кто-нибудь помочь мне получить правильное имя списка шаблонов для списка?

Ниже приведен код Powershell, который я использовал для получения шаблона списка для определенного списка.

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

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

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Пример скрипта для получения имени шаблона для вашей справки.

$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
0 голосов
/ 25 июня 2019

Пожалуйста, попробуйте этот подход, в моем случае он вернул правильные шаблоны списков



    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;
    }

Что вы можете сделать, это проверить, если возможно нет свойства (проверьте также другие реквизиты, не только те, которые я упоминаю в скрипте, вы всегда можетепросто проверьте объект $ tempplate, чтобы получить все) отличается для этих 3 шаблонов, которые у вас есть.Возможно, FeatureId такой же, но проверьте также FeatureId в SchemaXml, может быть, он другой.Если все свойства одинаковы, то вы можете обновить свойство 'description' для первого шаблона с помощью этого featureId, например 'temp1', а второго - со значением 'temp2' и так далее.После этого Вы можете проверить, имеет ли шаблон, который Вы получаете из списка, всегда то же самое описание.Вероятно, это будет то же самое, если да, то мой следующий подход будет состоять в том, чтобы попытаться обновить featureId, но имейте в виду, что это скорее не рекомендуемый подход и может привести к некоторым ошибкам.Возможно, лучшей идеей было бы попытаться воспроизвести ошибку в какой-то среде разработки и попытаться исправить ее, изменив featureId.

Также вы можете проверить SPExport и SPImport в списке, чтобы попытаться экспортировать этот список.и импортировать их в какую-то среду разработки и попытаться решить эту проблему там.

...