共用方式為


Office 365 - Create Managed Metadata Terms using CSOM with PowerShell

In a follow up to my previous post - "Office 365 - Output Managed Metadata Term Sets and Terms using CSOM with PowerShell" - https://blogs.technet.com/b/fromthefield/archive/2014/03/03/office-365-output-managed-metadata-term-sets-and-terms-using-csom.aspx, I've written a sample PowerShell script that can be used to add Terms to a specific Term Set. The script uses a simple text file as input with each Term to be added listed on a separate line:

Five variables need to be updated prior to running the script (highlighted), $User is the username of a tenant administrator, $Site is the URL of any Site within the tenant - this is simply used to bind to the Managed Metadata Service, $GroupName is the name of the group that contains the Term Set you wish to add Terms to, $TermSetName is the name of the Term Set you wish to add Terms to and $Terms is the location of the text file that contains the Terms to be added. 

#Please install the SharePoint client components SDK - https://www.microsoft.com/en-us/download/details.aspx?id=35585 prior to running this script.

#Specify tenant admin and URL
$User = admin@tenant.onmicrosoft.com
$Site = "https://tenant.sharepoint.com/sites/site"
$GroupName = "Group"
$TermSetName = "Term Set"
$Terms = Get-Content "D:\terms.txt"

#Add references to SharePoint client assemblies and authenticate to Office 365 site - required for CSOM
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"
$Password = Read-Host -Prompt "Please enter your password" -AsSecureString

#Bind to MMS
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site)
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
$Context.Credentials = $Creds
$MMS = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Context)
$Context.Load($MMS)
$Context.ExecuteQuery()

#Retrieve Term Stores
$TermStores = $MMS.TermStores
$Context.Load($TermStores)
$Context.ExecuteQuery()

#Bind to Term Store
$TermStore = $TermStores[0]
$Context.Load($TermStore)
$Context.ExecuteQuery()

#Bind to Group
$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 Terms
Foreach ($Term in $Terms)
    {
    $TermAdd = $TermSet.CreateTerm($Term,1033,[System.Guid]::NewGuid().toString())
    $Context.Load($TermAdd)
    $Context.ExecuteQuery()
    }

Below is a screenshot of the result:

Brendan Griffin - @brendankarl

Comments

  • Anonymous
    January 01, 2003
    Office 365 - Create Managed Metadata Terms using CSOM with PowerShell
    thank you
  • Anonymous
    January 01, 2003
    I've not tested this script with On-Prem so not sure if it will work. Do you have any further details?
  • Anonymous
    May 07, 2015
    Its not working for SharePoint on premise(on my VM)
    Can you help.
  • Anonymous
    June 05, 2015
    I've previously posted about using CSOM to automate the addition and management of Managed Metadata
  • Anonymous
    July 02, 2015
    Hi Brendan,

    I tried to follow through your blog.
    I have installed SDK, include related dlls(client, clientruntime, taxonomy)

    I assign variable below
    $mms = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($ctxP)

    I receive error:
    Cannot convert argument "context", with value:
    "Microsoft.SharePoint.Client.ClientContext", for "GetTaxonomySession" to type
    "Microsoft.SharePoint.Client.ClientRuntimeContext": "Cannot convert the
    "Microsoft.SharePoint.Client.ClientContext" value of type
    "Microsoft.SharePoint.Client.ClientContext" to type
    "Microsoft.SharePoint.Client.ClientRuntimeContext"."

    dll version:
    client -> 15.0.4711.1000
    taxonomy -> 15.0.4420.1017

  • Anonymous
    July 28, 2015
    @Kenny - is $ctxP a valid reference to a Site Collection?
  • Anonymous
    August 27, 2015
    Hi Brendan,

    Even am facing the same issue, which Kenny raised. Please Guide.
  • Anonymous
    August 28, 2015
    I've previously posted about using CSOM to automate the addition and management of Managed Metadata
  • Anonymous
    August 30, 2015
    @Shwetank - Please feel free to contact me via e-mail so that I can help further, I'm sure you can guess my address :)
  • Anonymous
    September 03, 2015
    @Brendan, curious to know of the solution to the issue Kenny and Shwetank ran into. I'm having the same problem. My $context is pointing to a site collection and I've tried it with every version of the client dlls I could get my hands on.
  • Anonymous
    September 04, 2015
    For me this did turn out to be a DLL versioning issue. After getting the latest client SDK and rebooting(reboot was important) it resolved the issue.
  • Anonymous
    December 28, 2016
    Hi Brendan,I am also running into issues.Missing argument in the parameters list.Please advise.Should we put $ before username and password?Thanks,Nehal