Обновление свойства профиля пользователя SharePoint с условием таксономии

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

$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

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

1 ответ

Кажется, что вы не можете использовать AddTaxonomyTerm метод на пустых полях. Сначала необходимо "инициализировать" поле таксономии. Использовать .Value сначала метод, затем AddTaxonomyTerm метод.

$locationsCollection.Value = $newTerm.Name;
$locationsCollection.AddTaxonomyTerm($newTerm)
Другие вопросы по тегам