Обновление свойства профиля пользователя 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)