SharePoint Online: Exportar conjunto de términos a CSV usando PowerShell
Requisito: Tenía que extraer todos los términos en un término establecido en formato CSV en SharePoint Online.
Lamentablemente, no hay forma de exportar el conjunto de términos de exportación de SharePoint Online desde la interfaz de usuario del navegador web. ¡Pero PowerShell puede ayudar!
SharePoint Online PowerShell para exportar conjunto de términos
Probablemente tenga algunos entornos de SharePoint Online diferentes configurados para desarrollo, pruebas y otros fines. Y probablemente desee utilizar los mismos conjuntos de términos en cada entorno. ¿No sería bueno si hubiera una manera fácil de exportar las definiciones de su conjunto de términos de un dominio e importarlas a otro? Bueno, ¡lo hay! Esta publicación de blog le mostrará cómo exportar un conjunto de términos en SharePoint Online usando PnP PowerShell.
Aquí está el PowerShell para exportar todos los términos de un conjunto de términos determinado en el almacén de términos de SharePoint Online:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
#Variables for Processing
$AdminURL = "https://crescent-admin.sharepoint.com/"
$TermGroupName = "Regions"
$TermSetName = "East Africa"
$CSVFile="C:\Temp\TermSetData.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
#Get the term store
$TaxonomySession=[Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx)
$TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
$Ctx.Load($TaxonomySession)
$Ctx.Load($TermStore)
$Ctx.ExecuteQuery()
#Get the Term Group
$TermGroup=$TermStore.Groups.GetByName($TermGroupName)
#Get the term set
$TermSet = $TermGroup.TermSets.GetByName($TermSetName)
#Get all tersm from the term set
$Terms = $TermSet.Terms
$Ctx.Load($Terms)
$Ctx.ExecuteQuery()
Write-Output $TermsetName > $CSVFile
#Export Terms to CSV
Foreach($Term in $Terms)
{
Write-Output $Term.Name >> $CSVFile
}
Write-host "Term Set Data Exported Successfully!" -ForegroundColor Green
}
Catch {
write-host -f Red "Error Exporting Term Set!" $_.Exception.Message
}
Este script extrae cada término del conjunto de términos dado en un archivo CSV. ¡Pero espera! ¡Cada término puede tener hasta 7 niveles de profundidad! Mientras que el script anterior exporta términos en un solo nivel, aquí hay otro script de PowerShell para exportar términos y términos secundarios de todos los niveles de un conjunto de términos determinado.
Exportar conjunto de términos en SharePoint Online usando PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
#Variables for Processing
$AdminURL = "https://crescent-admin.sharepoint.com/"
$TermGroupName = "Sectors"
$TermSetName = "Political Geography"
$CSVFile="C:\Temp\TermSet.csv"
#Custom Function get child terms of a given term
Function Get-Terms([Microsoft.SharePoint.Client.Taxonomy.Term] $Term,[String]$ParentTerm,[int] $Level)
{
$ChildTerms = $Term.Terms
$Ctx.Load($ChildTerms)
$Ctx.ExecuteQuery()
if($ParentTerm)
{
$ParentTerm = $ParentTerm + "," + $Term.Name
}
else
{
$ParentTerm = $Term.Name
}
Foreach ($SubTerm in $ChildTerms)
{
$Level = $Level + 1
#Terms may have upto 7 levels
$NumofCommas = 7 - $Level
$commas =[string]::Empty
#Append Commas
For ($j=0; $j -lt $NumofCommas; $j++)
{
$Commas = $Commas + ","
}
#Append the Output to CSV File
"," + "," + "," + $Term.IsAvailableForTagging + ",""$($Term.Description)""," + $ParentTerm + "," + $SubTerm.Name + $Commas >> $CSVFile
#Call the function recursively
Get-Terms -Term $SubTerm -ParentTerm $ParentTerm -Level $Level
}
}
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
#Get the term store
$TaxonomySession=[Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx)
$TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
$Ctx.Load($TaxonomySession)
$Ctx.Load($TermStore)
$Ctx.ExecuteQuery()
#Write Termset CSV Header (As in the standard format)
"Term Set Name,Term Set Description,LCID,Available for Tagging,Term Description,Level 1 Term,Level 2 Term,Level 3 Term,Level 4 Term,Level 5 Term,Level 6 Term,Level 7 Term" > $CSVFile
#Get the Term Group
$TermGroup=$TermStore.Groups.GetByName($TermGroupName)
#Get the term set
$TermSet = $TermGroup.TermSets.GetByName($TermSetName)
$Ctx.Load($Termset)
$Ctx.ExecuteQuery()
#Get all tersm from the term set
$Terms = $TermSet.Terms
$Ctx.Load($Terms)
$Ctx.ExecuteQuery()
#Write 2nd line as Termset properties(As per standard format)
$TermSet.Name + ",""$($TermSet.Description)""," + $TermStore.DefaultLanguage + "," + $TermSet.IsAvailableForTagging + ",""$($Terms[0].Description)""," + $Terms[0].Name + "," + "," + "," + "," + "," + "," >> $CSVFile
#Process each Term in the termset
Foreach($Term in $Terms)
{
write-host $Term.Name
Get-Terms $Term -Level 1 -ParentTerm ""
}
Write-host "Term Set Data Exported Successfully!" -ForegroundColor Green
}
Catch {
write-host -f Red "Error Exporting Term Set!" $_.Exception.Message
}
SharePoint Online: Exportar conjunto de términos usando PnP PowerShell
Utilice el cmdlet Export-PnPTaxonomy para exportar un conjunto de términos en SharePoint Online:
#Config Variables
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"
$TermSetId="286f9c03-193d-4f23-9863-c1b7ccd2c451"
$FilePath="C:\Temp\TermsetData.txt"
#Connect to PnP Online
Connect-PnPOnline -Url $AdminCenterURL -Credentials (Get-Credential)
#Export Term set
Export-PnPTaxonomy -TermSetId $TermsetID -Path $FilePath
Este PowerShell también puede exportar un término establecido en sitios de SharePoint Online de autenticación multifactor. Mi conjunto de términos:
y el resultado:



