1

У меня возникла проблема с попыткой обновить свойство профиля пользователя SharePoint, связанное с TermSet таксономии. Следующий код приводит к исключению.Обновление свойства профиля пользователя SharePoint с условием таксономии

$spsite = Get-SPSite $mysiteurl 
$context = Get-SPServiceContext $mysiteurl 
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context) 

if ($upm.UserExists($adAccount)) 
{ 
    $user = $upm.GetUserProfile($adAccount) 
    $locationsCollection = $user[$propName] 

    $taxMgr = new-object Microsoft.SharePoint.Taxonomy.TaxonomySession($spsite) 
    $taxStore = $taxMgr.TermStores[0] 
    $officeLocationsGroup = $taxStore.Groups["Office Locations"] 
    $officeLocationsTermSet = $officeLocationsGroup.TermSets["Office Locations"] 

    $terms = $officeLocationsTermSet.GetTerms($newValue, $false) 
    $foundTerm = $false 
    $newTerm = $null 
    foreach ($term in $terms) { 
     Write-Host " Found: $($term.Name)" -BackgroundColor Yellow -ForegroundColor Black 
     $foundTerm = $true 
     $newTerm = $term 
    } 

    if (-not $foundTerm) { 
     $newTerm = $officeLocationsTermSet.CreateTerm($theTermValue, 1033) 
     $foundTerm = $true 
     Write-Host " Created: $($newTerm.Name)" -BackgroundColor DarkGreen -ForegroundColor Black 
     $taxStore.CommitAll() 
    } 

    Write-Host "Adding the term..." 
    $locationsCollection.AddTaxonomyTerm($newTerm) 
    Write-Host "Term added." 
    $user.Commit() 
    Write-Host "Profile Committed." 
} 

Вызов AddTaxonomyTerm вызывает это исключение:

Exception calling "AddTaxonomyTerm" with "1" argument(s): "Index was out of ran 
ge. Must be non-negative and less than the size of the collection. 
Parameter name: index" 
At E:\mark\updateUserProfile.ps1:41 char:41 
+  $locationsCollection.AddTaxonomyTerm <<<< ($newTerm) 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

Любые мысли о том, почему это произошло бы оказать большую помощь. Благодарю.

+0

Вы решили эту проблему? Насколько я могу судить, 'AddTaxonomyTerm' не работает с пустыми полями таксономии. –

ответ

0

По-видимому, вы не можете использовать метод AddTaxonomyTerm в пустых полях. Сначала вам нужно «инициализировать» поле таксономии. Сначала используйте метод .Value, затем метод AddTaxonomyTerm.

$locationsCollection.Value = $newTerm.Name; 
$locationsCollection.AddTaxonomyTerm($newTerm) 

 Смежные вопросы

  • Нет связанных вопросов^_^