How to Export particular Group in Term Store Management in SharePoint 2013

Advertisement
  The following PowerShell script can be used to Export  particular Group in Term Store Management in SharePoint 2013. Here we have to give 'Site Collection','Name of the group' and 'Path' where we have to save the group.

param(
    [string]$siteUrl = "site collection",
    [string]$termGroup = "Name_Of_Term_Store",
    [string]$exportPath = "C:\export1"
)


function Add-Snapin {
    if ((Get-PSSnapin -Name Microsoft.Sharepoint.Powershell -ErrorAction SilentlyContinue) -eq $null) {
        $global:SPSnapinAdded = $true
        Write-Host "Adding SharePoint module to PowerShell" -NoNewline
        Add-PSSnapin Microsoft.Sharepoint.Powershell -ErrorAction Stop
        Write-Host " - Done."
    }
    
    Write-Host "Adding Microsoft.SharePoint assembly" -NoNewline
    Add-Type -AssemblyName "Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    # Disable the above line and enable the line below for SharePoint 2013
    # Add-Type -AssemblyName "Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Write-Host " - Done."
}

function Remove-Snapin {
    if ($global:SPSnapinAdded -eq $true) {
        Write-Host "Removing SharePoint module from PowerShell" -NoNewline
        Remove-PSSnapin Microsoft.Sharepoint.Powershell -ErrorAction SilentlyContinue
        Write-Host " - Done."
    }
}

function Get-ScriptDirectory
{
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    return Split-Path $Invocation.MyCommand.Path
}

function Export-SPTerms {
    param (
        [string]$siteUrl = $(Read-Host -prompt "Please provide the site collection URL"),
        [string]$termGroupName = $(Read-Host -prompt "Please provide the term group name to export"),
        [string]$saveLocation = $(Read-Host -prompt "Please provide the path of the folder to save the CSV file to")
    )
    
    if ([IO.Directory]::Exists($saveLocation) -eq $false)
    {
        New-Item ($saveLocation) -Type Directory | Out-Null
    }
    
    Write-Host "Getting Taxonomy Session";
    $taxonomySession = Get-SPTaxonomySession -site $siteUrl
    $taxonomyTermStore =  $taxonomySession.TermStores | Select Name
    $termStore = $taxonomySession.TermStores[$taxonomyTermStore.Name]
    $fileRootNoteCreated = $false;
    
    # Ampersands are stored as full width ampersands (see http://www.fileformat.info/info/unicode/char/ff06/index.htm)
    [Byte[]] $amp = 0xEF,0xBC,0x86
    
    Write-Host "Looping through Term store Groups to find: '$termGroupName'"
    foreach ($group in $termStore.Groups) {
        Write-Host "Checking: '$($group.Name)'"
        $groupName = $group.Name.Replace([System.Text.Encoding]::UTF8.GetString($amp), "&");
        if ($groupName -eq $termGroupName) {
        
            Write-Host "Looping through Term sets"
            foreach ($termSet in $group.TermSets) {
                # Remove unsafe file system characters from file name
                $parsedFilename =  [regex]::replace($termSet.Name, "[^a-zA-Z0-9\\-]", "_")
                
                $file = New-Object System.IO.StreamWriter($saveLocation + "\termset_" + $parsedFilename + ".csv")
                
                # Write out the headers
                #$file.Writeline("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")
                $file.Writeline("<termStore Name='" + $termStore.Name + "' GUID='" + $termStore.ID + "' Group='" + $groupName + "'>");   
                $file.Writeline("`t<termSet Name='" + $termSet.Name + "' GUID='" + $termSet.ID + "' Description='" + $termSet.Description + "'>");
                try {
                    Export-SPTermSet $termSet.Terms
                }
                finally {
                    $file.Writeline("`t</termSet>");
                    $file.Writeline("</termStore>");
                    $file.Flush()
                    $file.Close()
                }
            }
        }
    }
}

function Export-SPTermSet {
    param (
        [Microsoft.SharePoint.Taxonomy.TermCollection]$terms,
        [int]$level = 1,
        [string]$previousTerms = ""
    )
    
    $tabCount = $level+1;
    if ($level -gt 1) {$tabCount = $tabCount + ($level-1);}
    
    if ($terms.Count -gt 0)
    {
        $file.Writeline("`t" * $tabCount + "<terms>");
    }
    
    if ($level -ge 1 -or $level -le 7)
    {
        if ($terms.Count -gt 0 ) {
            $termSetName = ""
            if ($level -eq 1) {
                $termSetName =  """" + $terms[0].TermSet.Name.Replace([System.Text.Encoding]::UTF8.GetString($amp), "&") + """"
            }
            $terms | ForEach-Object {
                $termName = $_.Name.Replace([System.Text.Encoding]::UTF8.GetString($amp), "&");
                $currentTerms = $previousTerms + ",""" + $termName + """";
                
                $file.Writeline("`t" * $tabCount + "`t<term Name='" + $termName + "' isAvailableForTagging='" + $_.IsAvailableForTagging + "'>");
                $file.Writeline("`t" * $tabCount + "`t`t<description>" + $_.GetDescription() + "</description>");
                
                if ($level -lt 7) {
                    Export-SPTermSet $_.Terms ($level + 1) ($previousTerms + $currentTerms)
                }
                $file.Writeline("`t" * $tabCount + "`t</term>");
            }
        }
    }

    if ($terms.Count -gt 0)
    {
        $file.Writeline("`t" * $tabCount + "</terms>");
    }
}

try {
    Write-Host "Starting export of Metadata Termsets" -ForegroundColor Green
    $ErrorActionPreference = "Stop"
    Add-Snapin
    
    if (!($exportPath)) {
        $exportPath = (Get-ScriptDirectory)
    }
    
    Write-Host "Site: $siteUrl" -ForegroundColor Yellow
    Write-Host "Term Group: $termGroup" -ForegroundColor Yellow
    Write-Host "Export Path: $exportPath" -ForegroundColor Yellow
    
    Export-SPTerms $siteUrl $termGroup $exportPath
}
catch {
    Write-Host ""
    Write-Host "Error : " $Error[0] -ForegroundColor Red
    throw
}
finally {
    Remove-Snapin
}
Write-Host Finished -ForegroundColor Blue
Advertisements
SHARE

Unknown

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

1 comments:

  1. In just two days, Chiefs vs Patriots visiting will begin the 2017 NFL season. Yesterday, the Patriots Live issued the first weekly injury report and said they were limited to seven players both non-participatory and practically. Earlier today, the team released the latest application report.Chiefs Live will play one of the most watched regular season games in franchise history.

    Chiefs vs Patriots
    Chiefs vs Patriots Live
    Watch Chiefs vs Patriots
    Chiefs Live
    Patriots Live
    Patriots vs Chiefs
    Patriots vs Chiefs Live

    ReplyDelete