I tried to get to the my Taxonomy session through the client object model. Well if you Bing (I actually used google. But I’m Microsoft focussed so I thought I better mention Bing here) and go to the Microsoft pages documentation the there isn’t much available. All I found is some empty pages.

So first of all load the dlls ( Make sure that you’ve got these dlls on your client!)

Add-Type -Path “c:\Scripts\Microsoft.SharePoint.Client.dll”
Add-Type -Path “c:\Scripts\Microsoft.SharePoint.Client.Runtime.dll”
Add-Type -Path “c:\Scripts\Microsoft.SharePoint.Client.Taxonomy.dll”

The first two are for the SharePoint Client Object Model. The 3rd dll is for the taxonomy stuff.

Then I setup the Client Object Model Context

$ctx = new-object Microsoft.SharePoint.Client.ClientContext($siteUrl)

Then like without the Client Object Model I need to get the session.

$session = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($ctx);
$ctx.Load($session);
$ctx.ExecuteQuery();

Ok, so now I’ve got a taxonomy session

Now I need to get to my TermStores

$termstores = $session.TermStores
$ctx.Load($termstores);
$ctx.ExecuteQuery();

I’m likely only to have one termstore, but just in case.

$termstores |% {
$termstore = $_;
if ($termstore.Name -eq “Managed Metadata Service”)
{
… More to come here …
}
}

Then to complete the above code I got my groups and groupset from the termstore

$groups = $termstore.Groups;
$ctx.Load($groups);
$ctx.ExecuteQuery();

$groupset = $groups.GetByName(“My Company”);
$ctx.Load($groupset);
$ctx.ExecuteQuery();

$termsets = $groupset.TermSets;
$ctx.Load($termsets);
$ctx.ExecuteQuery();

$industrytermSet = $termsets.GetByName(“Industry”);
$ctx.Load($industrytermSet);
$ctx.ExecuteQuery();

And my termset is available.

So now we’re nearly there.

I want to be able to get to my terms in a termset. So just a few more steps to go.

Now I’m getting all my terms ( I’ve only got 22 in this termset so no problem to pick them all up)

$industryterms = $industrytermSet.GetAllTerms()
$ctx.Load($industryterms);
$ctx.ExecuteQuery();

Now to get my term all I need to do is:

$term = $industryterms.GetByName(“Aerospace”)

Hopefully this will help someone else.

Advertisements