Получить набор терминов SharePoint online и создать термин, если он не существует в PowerShell

#powershell #sharepoint-online

#powershell #sharepoint-online

Вопрос:

Моя иерархия хранилища терминов в SharePoint online admin:

Организация 
 Организационные единицы 
 Отдел 
 Управление средствами тестирования 
 Расположение 
 Расположение теста

Я хотел бы выполнить поиск «Управление средствами тестирования» только в «Отделе» и создать его в разделе «Отдел», если он не существует.

У меня есть приведенный ниже сценарий PowerShell для проверки и создания термина в SharePoint Online. Но я хотел бы проверить только в «Отделе» для этого термина. У меня нет никакого успеха. Любая помощь приветствуется.

 $TermGroupName = "Organisation"
$TermSetName = "Org Units"
$TermName="Test Facilities Management"
If(-Not(Get-PnPTerm -Identity $TermName -TermSet $TermSetName -TermGroup $TermGroupName -Recursive -ErrorAction SilentlyContinue))
{
    #Create new Term
    New-PnPTerm -Name $TermName -TermSet $TermSetName -TermGroup $TermGroupName 
}
  

Ответ №1:

Похоже, вы хотите создать дополнительный термин.
Мой тестовый код для вашей справки:

 $TermGroupName = "testMetaData"#Group
$TermSetName = "test"#term group
$TermName="test1"#term set
$subTermName="subTerm"#subterm
$username = "amos@contoso.onmicrosoft.com"
$password = "Password"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $(convertto-securestring $Password -asplaintext -force)
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/dev -Credentials $cred
$ctx = Get-PnPContext
$term=Get-PnPTerm -Identity $TermName -TermSet $TermSetName -TermGroup $TermGroupName -Recursive -ErrorAction SilentlyContinue    
$subterm=Get-PnPTerm -Identity $subTermName -TermSet $TermSetName -TermGroup $TermGroupName -Recursive -ErrorAction SilentlyContinue
if($subterm.Name -eq $null){
  $guid=New-Guid
  $term.CreateTerm($subTermName, 1033, $guid)
  $ctx.Load($term)
$ctx.ExecuteQuery()
}
  

Комментарии:

1. Это решило часть вопроса, которая заключается в создании имени подтерма под термином. Есть ли способ поиска вложенного термина в термине? например, найдите «Управление средствами тестирования» только в термине «отдел». Рекурсивный флаг будет искать термин во всех TermSetName.

2. Для получения sunterm нет oob api. Возможно, нам потребуется сначала получить родительский термин, а затем выполнить цикл обхода атрибута terms родительского термина.