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

[玩转系统] SharePoint Online:使用 PowerShell 将术语库数据导出到 CSV

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

SharePoint Online:使用 PowerShell 将术语库数据导出到 CSV


要求:将术语库数据从 SharePoint Online 导出到 CSV 文件。

如何在 SharePoint Online 中导出术语库?

没有现成的方法可以在 SharePoint Online 中导出完整的术语库数据。但是,我们可以使用 PowerShell 将术语库数据导出到 CSV 文件,包括所有术语组、术语集和术语。以下脚本可用于创建现有术语库的备份并将其迁移到另一个环境。

[玩转系统] SharePoint Online:使用 PowerShell 将术语库数据导出到 CSV

PowerShell 将术语库数据导出到 CSV:

让我们使用 PowerShell 导出 SharePoint Online 中的术语库。


#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"
  
#Variables for Processing
$AdminURL = "https://crescent-admin.sharepoint.com/"
$ReportOutput="C:\Temp\TermStoreData.csv"

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($AdminURL)
    $Ctx.Credentials = $Credentials

     #Array to Hold Result - PSObjects
    $ResultCollection = @()

    #Get the term store
    $TaxonomySession=[Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx) 
    $TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
    $Ctx.Load($TaxonomySession)
    $Ctx.Load($TermStore)
    $Ctx.ExecuteQuery()

    #Get all term groups   
    $TermGroups = $TermStore.Groups
    $Ctx.Load($TermGroups)
    $Ctx.ExecuteQuery()

    #Iterate through each term group
    Foreach($Group in $TermGroups)
    {
        #Get all Term sets in the Term group
        $TermSets = $Group.TermSets
        $Ctx.Load($TermSets)
        $Ctx.ExecuteQuery()

        #Iterate through each termset
        Foreach($TermSet in $TermSets)
        {
            #Get all Terms from the term set
            $Terms = $TermSet.Terms
            $Ctx.Load($Terms)
            $Ctx.ExecuteQuery()

            #Iterate through each term
            Foreach($Term in $Terms)
            {
                $TermData = new-object PSObject
                $TermData | Add-member -membertype NoteProperty -name "Group" -Value $Group.Name
                $TermData | Add-member -membertype NoteProperty -name "TermSet" -Value $Termset.Name
                $TermData | Add-member -membertype NoteProperty -name "Term" -Value $Term.Name   
                $ResultCollection += $TermData
            }
        }
    }
    #export term store sharepoint online powershell
    $ResultCollection | Export-csv $ReportOutput -notypeinformation

    Write-host "Term Store Data Successfully Exported!" -ForegroundColor Green   
}
Catch {
    write-host -f Red "Error Exporting Termstore Data!" $_.Exception.Message
}

这会生成一个 CSV 文件,如下所示: 它从术语库中导出所有一级术语。

[玩转系统] SharePoint Online:使用 PowerShell 将术语库数据导出到 CSV

将所有级别的所有术语从术语库导出到 CSV:

如果术语商店中的术语最多有 7 个级别怎么办?

[玩转系统] SharePoint Online:使用 PowerShell 将术语库数据导出到 CSV

此 PowerShell 脚本将所有级别的所有术语导出到 CSV。术语之间用分号 (;) 分隔


#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"
   
#Variables for Processing
$AdminURL = "https://crescent-admin.sharepoint.com/"
$ReportOutput="C:\Temp\TermStoreData.csv"

#Function to get all child terms from a Term
Function Get-SPOChildTerms([Microsoft.SharePoint.Client.Taxonomy.Term]$Term)
{
    $TermsColl = @()
    $TermsColl += $Term.PathOfTerm

    #Get All child terms
    $ChildTerms = $Term.Terms
    $Ctx.Load($ChildTerms)
    $Ctx.ExecuteQuery()
 
    #Process all child terms
    Foreach ($ChildTerm in $ChildTerms)
    {
        Get-SPOChildTerms($ChildTerm)
    }
    Return $TermsColl
}

Try {
    #Get Credentials to connect
    $Cred = Get-Credential
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
     #Array to Hold Result - PSObjects
    $ResultCollection = @()
 
    #Get the term store
    $TaxonomySession=[Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx) 
    $TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
    $Ctx.Load($TaxonomySession)
    $Ctx.Load($TermStore)
    $Ctx.ExecuteQuery()
 
    #Get all term groups   
    $TermGroups = $TermStore.Groups
    $Ctx.Load($TermGroups)
    $Ctx.ExecuteQuery()
 
    #Iterate through each term group
    Foreach($Group in $TermGroups)
    {
        #Get all Term sets in the Term group
        $TermSets = $Group.TermSets
        $Ctx.Load($TermSets)
        $Ctx.ExecuteQuery()
 
        #Iterate through each termset
        Foreach($TermSet in $TermSets)
        {
            Write-host "Getting Terms from Term Set '$($Termset.Name)' from Term Group '$($Group.Name)'" -f Yellow
            #Get all Terms from the term set
            $Terms = $TermSet.Terms
            $Ctx.Load($Terms)
            $Ctx.ExecuteQuery()

            #Iterate through each term
            Foreach($Term in $Terms)
            {
                #Get the child terms of the term
                $ChildTerms = Get-SPOChildTerms($Term)

                ForEach($Child in $ChildTerms)
                {
                    $TermData = new-object PSObject
                    $TermData | Add-member -membertype NoteProperty -name "Group" -Value $Group.Name
                    $TermData | Add-member -membertype NoteProperty -name "TermSet" -Value $Termset.Name              
                    $TermData | Add-member -membertype NoteProperty -name "Terms" -Value $Child
                    $ResultCollection += $TermData
                }
            }
        }
    }
    $ResultCollection
    #Export Results to a CSV File
    $ResultCollection | Export-csv $ReportOutput -NoTypeInformation -Force
 
    Write-host "Term Store Data Successfully Exported!" -ForegroundColor Green   
}
Catch {
    write-host -f Red "Error Exporting Termstore Data!" $_.Exception.Message
}

如果要将所有术语集导出到 SharePoint Online 兼容的 CSV(以便您可以使用术语库中的“导入”功能),请使用另一个脚本:SharePoint Online:使用 PowerShell 将术语集导出到 CSV

PnP PowerShell 将术语库数据导出到 XML

以下是如何使用 PnP PowerShell cmdlet Export-PnPTermGroupToXml 导出 SharePoint Online 中的术语库:


#Config Variables
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"

#Connect to PnP Online
Connect-PnPOnline -Url $AdminCenterURL -Interactive

#Export Term Store Data to XML
Export-PnPTermGroupToXml -Out "C:\Temp\TermStoreData.xml"

要将此 CSV 数据导入到任何其他术语库,请使用我的另一篇文章:PowerShell 在 SharePoint Online 中从 CSV 导入术语库数据

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

取消回复欢迎 发表评论:

关灯