function ImportTermSet([Microsoft.SharePoint.Taxonomy.TermStore]$store, [string]$groupName, [PSCustomObject]$termSet) { function ImportTerm([Microsoft.SharePoint.Taxonomy.Group]$group, [Microsoft.SharePoint.Taxonomy.TermSet]$set, [Microsoft.SharePoint.Taxonomy.Term]$parent, [string[]]$path) { if ($path.Length -eq 0) { return } elseif ($group -eq $null) { $group = $store.Groups | where { $_.Name -eq $path[0] } if ($group -eq $null) { $group = $store.CreateGroup($path[0]) } } elseif ($set -eq $null) { $set = $group.TermSets | where { $_.Name -eq $path[0] } if ($set -eq $null) { Write-Host "Create $path[0]" $set = $group.CreateTermSet($path[0]) Write-Host "Created $path[0]" } } else { $node = if ($parent -eq $null) { $set } else { $parent } $parent = $node.Terms | where { $_.Name -eq $path[0].Split(";")[1] } if ($parent -eq $null) { $path[0].Split(";")[0] $parent = $node.CreateTerm($path[0].Split(";")[0], 1031) ($parent.Labels | ? {$_.Language -eq 1033}).Value = $path[0].Split(";")[1] $path[0].Split(";")[1] "################" } } ImportTerm $group $set $parent $path[1..($path.Length)] } $termSetName = $termSet[0]."Term Set Name" $termSet | where { $_."Level 1 Term" -ne "" } | foreach { $path = @($groupName, $termSetName) + @(for ($i = 1; $i -le 7; $i++) { $term = $_."Level $i Term" + ";" + $_."Level $($i + 7) Term" if ($term -eq ";") { break } else { $term } } ) ImportTerm -path $path } } $url = "http://yoururl:[port]/" $session = Get-SPTaxonomySession -Site $url $store = $session.TermStores["Managed Metadata Service Application"] $termSet = Import-Csv "C:\temp\TESTFILE.csv" -Encoding Unicode ImportTermSet $store "mystore" $termSet $store.CommitAll()