Как обновить свойство файла управляемых метаданных в SharePoint Online - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь установить значение свойства для столбца управляемых метаданных для файлов в папке, расположенной в библиотеке документов.Я могу установить значения для других метаданных, поскольку они являются текстовыми полями.Я считаю, что я должен привести его к другому типу, чтобы установить значение.Я пробовал различные методы, которые я нашел, но ничего не работает.«Тип документа» - это столбец управляемых метаданных.

$files = Get-PnPFolderItem -FolderSiteRelativeUrl $folderRelativeUrl -ItemType File 

foreach($file in $files)
{
    write-output $file.Name
    $file.Properties['Business Unit'] = $Global:BusinessUnit
    $file.Properties['Customer Name'] = $Global:CustomerName
    $file.Properties['Customer No'] = $Global:CustomerNumber
    #$file.Properties['Doc Type'] = $Global:DocType
    $file.Properties['Doc Type'] = $term.Name
    $file.Properties['Job Name'] = $Global:JobName
    $file.Properties['Job Number'] = $Global:JobNumber
    $file.Properties['Opportunity Name'] = $Global:OpportunityName
    $file.Properties['Opportunity No'] = $Global:OpportunityNumber
    $file.Properties['Quote Name'] = $Global:QuoteName
    $file.Properties['Quote ID'] = $Global:QuoteNumber
    $file.Properties['System'] = $Global:System
    $file.Update()

Я использую эту команду для получения термина из хранилища терминов

$term = Get-PnpTerm -TermGroup "Document Types" -TermSet Document -Identity $Folder -ErrorAction Ignore

$ Папка - это имя, которым я являюсьищем в терминах магазина, например: "Цитата".

1 Ответ

0 голосов
/ 15 июня 2018

Можно использовать следующие параметры для установки значения таксономии:

Примечание: предполагается, что Doc Type является однозначным полем таксономии

Опция 1

Через Taxonomy из CSOM API, как показано ниже:

$files = Get-PnPFolderItem -FolderSiteRelativeUrl $folderRelativeUrl -ItemType File 

$term = Get-PnpTerm -TermGroup $termGroup -TermSet $termSet -Identity $termId 

#1. get taxonomy specific field
$ctx = $files.Context
$field = $files.ListItemAllFields.ParentList.Fields.GetByInternalNameOrTitle($fieldName) 
$ctx.Load($field)
$ctx.ExecuteQuery()
$taxField = [Microsoft.SharePoint.Client.ClientContext].GetMethod("CastTo").MakeGenericMethod([Microsoft.SharePoint.Client.Taxonomy.TaxonomyField]).Invoke($ctx, $field)

foreach($file in $files)
{
    write-output $file.Name

    $taxField.SetFieldValueByTerm($file.ListItemAllFields,$term,1033) #2.update taxonomy field value
    $file.ListItemAllFields['Job Name'] = $Global:JobName
    $file.ListItemAllFields.Update()
    #$file.Update()    
}

Опция 2

Через PnP-PowerShell SetPnPTaxonomyFieldValue командлет :

foreach($file in $files)
{
    write-output $file.Name
    Set-PnPTaxonomyFieldValue -ListItem $file.ListItemAllFields -InternalFieldName 'DocType' -TermId $term.Id        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...