2017-05-19 7 views
0

ナビゲーション目的で、用語セットを使用します。SharePoint 2013のエクスポート/インポート用語セット

特定の用語グループのURLを含む用語セットを取得するには、PowerShellを作成する必要があります。ここ は私のスクリプト

Set-ExecutionPolicy -Scope CurrentUser Unrestricted 
 
#Specify admin user and SharePoint site URL 
 
##update login 
 
$User = "corporate\spuser" 
 
##update siteUrl 
 
$Site = "http://sp13" 
 

 
#Adding references to SharePoint client assemblies 
 

 
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" 
 
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" 
 
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll" 
 

 
$Pwd = "xvcx23423" 
 
$GroupName = "India" 
 
$TermSetName ="India_Global" 
 

 
#Recursive function to get terms 
 

 
function GetTerms([Microsoft.SharePoint.Client.Taxonomy.Term] $Term,[String]$ParentTerm,[int] $Level) 
 
{ 
 
    $Terms = $Term.Terms; 
 
    $Context.Load($Terms) 
 
    $Context.ExecuteQuery(); 
 
    if($ParentTerm) 
 
    { 
 
    $ParentTerm = $ParentTerm + "," + $Term.Name; 
 
    } 
 
    else 
 
    { 
 
    $ParentTerm = $Term.Name; 
 
    } 
 

 
    Foreach ($SubTerm in $Terms) 
 
    { 
 
    $Level = $Level + 1; 
 
    #up to 7 terms levels are written 
 
    $NumofCommas = 7 - $Level; 
 
    $commas =""; 
 

 
    For ($i=0; $i -lt $NumofCommas; $i++) 
 
    { 
 
     $commas = $commas + ","; 
 
    } 
 

 
    $file.Writeline("," + "," + "," + "," + $Term.Description + "," + $ParentTerm + "," + $SubTerm.Name + $commas); 
 
    GetTerms -Term $SubTerm -ParentTerm $ParentTerm -Level $Level; 
 
    } 
 
} 
 

 
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site) 
 

 
$Credentials = New-Object System.Net.NetworkCredential($User,$Pwd); 
 

 
$Context.Credentials = $Credentials 
 

 
$MMS = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Context) 
 

 
$Context.Load($MMS) 
 

 
$Context.ExecuteQuery() 
 
    
 
#Get Term Stores 
 

 
$TermStores = $MMS.TermStores 
 

 
$Context.Load($TermStores) 
 

 
$Context.ExecuteQuery() 
 
    
 
$TermStore = $TermStores[0] 
 

 
$Context.Load($TermStore) 
 
$Context.ExecuteQuery() 
 

 
#Get Groups 
 
$Group = $TermStore.Groups.GetByName($GroupName) 
 
$Context.Load($Group) 
 
$Context.ExecuteQuery() 
 

 

 
#Bind to Term Set 
 
$TermSet = $Group.TermSets.GetByName($TermSetName) 
 
$Context.Load($TermSet) 
 
$Context.ExecuteQuery() 
 
    
 
#Create the file and add headings 
 
$OutputFile = "Output File Path1.csv" 
 
$file = New-Object System.IO.StreamWriter($OutputFile) 
 

 
$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"); 
 
    
 
$Terms = $TermSet.Terms 
 
$Context.Load($Terms); 
 
$Context.ExecuteQuery(); 
 
$lineNum = 1; 
 
Foreach ($Term in $Terms) 
 
{ 
 
    if($lineNum -eq 1) 
 
    { 
 
    ##output term properties on first line only 
 
    $file.Writeline($TermSet.Name + "," + $TermSet.Description + "," + $TermStore.DefaultLanguage + "," + $TermSet.IsAvailableForTagging + "," + $Term.Description + "," + $Term.Name + "," + "," + "," + "," + "," + ","); 
 
    } 
 
    else 
 
    { 
 
    $file.Writeline("," + "," + "," + "," + $Term.Description + "," + $Term.Name + "," + "," + "," + "," + "," + ","); 
 
    } 
 
    $lineNum = $lineNum + 1; 
 
    $TermTreeLevel = 1; 
 
    GetTerms -Term $Term -Level $TermTreeLevel -ParentTerm ""; 
 
} 
 

 
$file.Flush(); 
 
$file.Close();

用語セットのURLを取得するにはどのように任意のアイデアです。

特定のグループのエクスポート/インポート用語セットには、より良いアプローチがありますか。

答えて

0

あなたは用語がTaxonomySessionを使用してフレンドリーURLを設定することができます:

SPSite site = SPSite.Current.Site; 
TaxonomySession servis = new TaxonomySession(site); 
siteNavigationStore = servis.DefaultSiteCollectionTermStore; 
siteNavigationGroup = sitenavigationstore.GetSiteCollectionGroup(site); 
siteNavigationSet = sitenavigationgrup.TermSets["Term Set Name"]; 
NavigationTerm navigatedTerm = NavigationTerm.GetAsResolvedByWeb(navigationterm, site.RootWeb, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); 
navigatedTerm.GetWebRelativeFriendlyUrl(); 

はあなたの優しいURL

を返すGetWebRelativeFriendlyUrl
関連する問題