当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 获取/设置托管元数据列值

作者:精品下载站 日期:2024-12-14 14:08:13 浏览:14 分类:玩电脑

使用 PowerShell 获取/设置托管元数据列值


以下是我收集的很棒的 PowerShell 脚本,用于读取和更新 SharePoint 中的托管元数据字段值:

[玩转系统] 使用 PowerShell 获取/设置托管元数据列值

读取托管元数据列值:

PowerShell 用于获取托管元数据字段值。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

$WebURL="https://portal.crescent.com/"
$ListName="Deals"
$FieldName="Region"
$ItemID=1

#Get Objects 
$Web = Get-SPWeb $WebURL     
$List= $Web.Lists[$listName]
$Item = $List.GetItembyID($ItemID)

#Get MMS column Value
[Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue]$MMSFieldValue = $item[$FieldName] 

write-host $MMSFieldValue.Label

使用 PowerShell 获取多值 MMS 字段值:

当选择“允许多个值”时,我们可以通过以下方式检索它的值:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

$WebURL="https://portal.crescent.com/"
$ListName="Deals"
$FieldName="Region"
$ItemID=2

#Get Objects 
$Web = Get-SPWeb $WebURL     
$List= $Web.Lists[$listName]
$Item = $List.GetItembyID($ItemID)

#get managed metadata field value powershell
[Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection]$MMSFieldValueColl = $item[$FieldName] 

#Concatenate each term in the value collection
$MMSFieldTerms=""
Foreach ($MMSFieldValue in $MMSFieldValueColl)
{
    if($MMSFieldValue.label -ne $null)
    {
        $MMSFieldTerms+=$MMSFieldValue.label+"; "
    }
}
write-host $MMSFieldTerms

使用 PowerShell 更新托管元数据列值:

以下是如何使用 PowerShell 更新托管元数据列。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

#Variables
$WebURL="https://portal.crescent.com"
$ListName="Deals"
$FieldName="Region"
$ItemID=1

#Get the web
$Web = Get-SPWeb $WebURL     

#Get the Term from Term store
$TaxonomySession = Get-SPTaxonomySession -Site $web.Site
$TermStore = $TaxonomySession.TermStores["Managed Metadata Service"]
$TermGroup = $TermStore.Groups["Knowledge Portal"]
$TermSet = $TermGroup.TermSets["Regions"]
$Term = $Termset.Terms["America"]

#You can also get the term directly as: $Term = "15;#America|1c58d657-9bd1-4bff-b1b0-74e52eb717dd"
#Use SharePoint Manager

#Get the List and List Item
$List= $Web.Lists[$listName]
$Item = $List.GetItembyID($ItemID)

#set managed metadata field value powershell
$MMSField = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$Item.Fields[$FieldName]
$MMSField.setFieldValue($Item,$Term)
$Item.Update()

Write-host "Managed Metadata Field value updated!"

更新多个值的托管元数据列值

SharePoint 2013 使用 PowerShell 设置托管元数据字段。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 

#Variables
$WebURL="https://portal.crescent.com"
$ListName="Deals"
$FieldName="Region"
$ItemID=2

#Get the web
$Web = Get-SPWeb $WebURL     

#Get the Term store, Group and Term Set
$TaxonomySession = Get-SPTaxonomySession -Site $web.Site
$TermStore = $TaxonomySession.TermStores["Managed Metadata Service"]
$TermGroup = $TermStore.Groups["Knowledge Portal"]
$TermSet = $TermGroup.TermSets["Regions"]

#Get the List, List Item and Field
$List= $Web.Lists[$listName]
$Item = $List.GetItembyID($ItemID)
$MMSField = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$Item.Fields[$FieldName]

#Actual Term Values to update
$TermValuesColl = @("Africa","Asia","Europe")

#Create a Term field value collection
$MMSValueCollection = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection($MMSField)
#Form each Term
foreach($TermValue in $TermValuesColl)
{
        $Term = $Termset.Terms[$TermValue]
        $MMSFieldValue = new-object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($MMSField)
        $MMSFieldValue.TermGuid = $Term.Id
        $MMSFieldValue.Label = $Term.Name
        $MMSValueCollection.Add($MMSFieldValue)
 }

#updating sharepoint managed metadata columns with powershell: Multi-value MMS column
$MMSField.setFieldValue($Item,$MMSValueCollection)
$Item.Update()

Write-host "Managed Metadata Field value updated!"

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯