#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 родительского термина.