[玩转系统] SharePoint Online:使用 PowerShell 更新托管元数据字段值
作者:精品下载站 日期:2024-12-14 14:42:33 浏览:14 分类:玩电脑
SharePoint Online:使用 PowerShell 更新托管元数据字段值
要求:在 SharePoint Online 中使用 PowerShell 更新托管元数据列值。
SharePoint Online:用于更新托管元数据字段值的 PowerShell CSOM 脚本
在 SharePoint Online 中,您可以使用 PowerShell 设置托管元数据列。本博文将向您展示如何使用 PowerShell 更新托管元数据列。我们将分享一些使用 CSOM 和 PnP PowerShell 更新托管元数据列值的脚本示例。
假设数据已填充到术语库中,类似于您在上面看到的内容,以下是用于设置托管元数据列的值的 PowerShell 脚本:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/Ops/"
$ListName="Projects"
$ItemID="1"
$TaxonomyFieldTitle="Region"
#Termset parameters
$TermGroupName="Regions"
$TermSetName="MENA"
$TermName="UAE"
Try {
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the list and Item
$List=$Ctx.web.Lists.GetByTitle($ListName)
$Item = $List.GetItemById($ItemID)
$Ctx.Load($Item)
$Ctx.ExecuteQuery()
#Get the Taxonomy Session
$TaxonomySession = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx);
$TaxonomySession.UpdateCache()
$TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
$Ctx.Load($TaxonomySession)
$Ctx.Load($TermStore)
$Ctx.ExecuteQuery()
#Get the Term Group
$TermGroup = $TermStore.Groups.GetByName($TermGroupName)
$Ctx.Load($TermGroup)
#Get the termset
$TermSet = $TermGroup.TermSets.GetByName($TermSetName)
$Ctx.Load($TermSet)
#Get the term
$Term = $TermSet.Terms.GetByName($TermName)
$Ctx.Load($Term)
$Ctx.ExecuteQuery()
#sharepoint online powershell update managed metadata
$Item[$TaxonomyFieldTitle] = $Term.Id.ToString()
$Item.Update()
$Ctx.ExecuteQuery()
Write-host -f Green "Taxonomy Column Value has been updated successfully!"
}
Catch {
write-host -f Red "Error updating Taxonomy Field Value!" $_.Exception.Message
}
此脚本将给定的托管元数据列值更新为指定的术语。
简而言之,您可以使用术语 GUID 更新 MMS 字段!例如:$ListItem[“ManagedMetadataField”] =“6165a8c3-1e46-45de-abfe-2dc28dd1f8c6”SharePoint Online:用于更新托管元数据的 PowerShell
或者,您也可以投射列并设置 MMS 字段值。这是一个示例(从第 52 行替换):
#Get the Field
$Field = $List.Fields.GetByInternalNameOrTitle($TaxonomyFieldTitle)
$Ctx.Load($Field)
$Ctx.ExecuteQuery()
#Cast to Taxonomy Field
$TaxField = [Microsoft.SharePoint.Client.ClientContext].GetMethod("CastTo").MakeGenericMethod([Microsoft.SharePoint.Client.Taxonomy.TaxonomyField]).Invoke($Ctx, $Field)
$TaxFieldValue = New-Object Microsoft.SharePoint.Client.Taxonomy.TaxonomyFieldValue
$TaxFieldValue.TermGuid = $Term.Id
#sharepoint online powershell to set managed metadata field value
$TaxField.SetFieldValueByValue($Item,$TaxFieldValue)
$Item.Update()
$Ctx.ExecuteQuery()
在 SharePoint Online 中使用 PowerShell 更新多值托管元数据列:
上述脚本使用单个值设置托管元数据字段。如何在启用“允许多个值”设置的情况下更新 MMS 列?
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/Ops/"
$ListName="Projects"
$ItemID="1"
$TaxonomyFieldTitle="Region"
#Managed Metadata parameters
$TermGroupName="Regions"
$TermSetName="MENA"
$TermNames = @('UAE','Qatar')
Try {
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the list and Item
$List=$Ctx.web.Lists.GetByTitle($ListName)
$Item = $List.GetItemById($ItemID)
$Ctx.Load($Item)
$Ctx.ExecuteQuery()
#Get the Taxonomy Session
$TaxonomySession = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx);
$TaxonomySession.UpdateCache()
$TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
$Ctx.Load($TaxonomySession)
$Ctx.Load($TermStore)
$Ctx.ExecuteQuery()
#Get the Term Group
$TermGroup = $TermStore.Groups.GetByName($TermGroupName)
$Ctx.Load($TermGroup)
#Get the termset
$TermSet = $TermGroup.TermSets.GetByName($TermSetName)
$Ctx.Load($TermSet)
#Get All terms from the termset
$Terms = $TermSet.GetAllTerms()
$Ctx.Load($Terms)
$Ctx.ExecuteQuery()
$TermValues = @();
#Get Each Term from the given Terms Array and form the Term String. E.g. "-1;#UAE|b3816a66-12d4-4232-f99e4620a;#-1;#Qatar|casae2c4-195-42d5-gb73ebcd5"
ForEach($Term in $Terms)
{
ForEach($TermName in $TermNames)
{
If($TermName -eq $Term.Name)
{
$TermValues += "-1;#" + $Term.Name + "|" + $Term.Id
$TermValuesString = $TermValues -join ";#"
}
}
}
#Get the Field to update
$Field = $List.Fields.GetByInternalNameOrTitle($TaxonomyFieldTitle)
$Ctx.Load($Field)
$Ctx.ExecuteQuery()
#Cast to Taxonomy Field
$TaxField = [Microsoft.SharePoint.Client.ClientContext].GetMethod("CastTo").MakeGenericMethod([Microsoft.SharePoint.Client.Taxonomy.TaxonomyField]).Invoke($Ctx, $Field)
#update managed metadata column powershell sharepoint online
$TaxFieldValues = New-Object Microsoft.SharePoint.Client.Taxonomy.TaxonomyFieldValueCollection($Ctx, $TermValuesString, $TaxField)
$TaxField.SetFieldValueByValueCollection($Item, $TaxFieldValues)
$Item.Update()
$Ctx.ExecuteQuery()
Write-host -f Green "Taxonomy Column Value has been updated successfully!"
}
Catch {
write-host -f Red "Error updating Taxonomy Field Value!" $_.Exception.Message
}
PnP PowerShell 更新 SharePoint Online 中的托管元数据列
以下是如何使用 PnP PowerShell 向托管元数据列添加值:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$ListName = "Projects"
$ItemID = 1
#Set MMS Column value in: "Group|Termset|Parent|Child" format
$FieldValue = "Crescent|Deals Pipeline|Department|Accounts"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Update Managed Metadata Column value using PowerShell
Set-PnPListItem -List $ListName -Identity $ItemID -Values @{"Department"= $FieldValue}
这将设置“部门”MMS 列值的值。
如果您想要使用 PnP PowerShell 设置允许多个值的托管元数据列值,该怎么办?当然,只需将它们包装在一个数组中即可!
#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/PMO"
$ListName = "Projects"
$ItemID = 1
#Set Multivalued Managed Metadata Column value in: "Group|Termset|Parent|Child" format
$FieldValue = @("PMO|Classification|IT","PMO|Classification|HR")
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Set Managed Metadata Column value using PowerShell
Set-PnPListItem -List $ListName -Identity $ItemID -Values @{"Department"= $FieldValue}
我们还可以使用 Set-PnpTaxonomyFieldValue cmdlet 设置托管元数据字段的值。例如。,
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/PMO"
$ListName = "Projects"
$FieldInternalName = "Department"
$ItemID = 1
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the List Item
$ListItem = Get-PnPListItem -List $ListName -Id $ItemID
#Set Managed Metadata Column value in: "Group|Termset|Parent|Child" format
Set-PnpTaxonomyFieldValue -ListItem $ListItem -InternalFieldName $FieldInternalName -TermPath 'People|Department|HR'
您还可以使用带有 -TermID 参数的术语 ID (GUID) 来更新字段值。同样,要更新具有多个值的托管元数据列,请使用:
#Set Multivalued Managed Metadata Column value in: @{"TermId1"="Label1";"TermId2"="Label2"} format
Set-PnpTaxonomyFieldValue -ListItem $ListItem -InternalFieldName $FieldInternalName -Terms @{"4f31bd74-d1cf-4318-bcbc-6e7b481fcce8"="Engineering";"4038e965-dbb8-4969-8783-02af0cbcbdfd"="HR"}
若要获取托管元数据列的值,请使用:SharePoint Online:PowerShell 获取托管元数据字段值
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[软件合集] 25年6月2日 精选软件18个
[软件合集] 25年6月1日 精选软件15个
[短剧合集] 2025年06月1日 精选+付费短剧推荐59部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag