[SharePoint] Gérer par programmation la publication de Types de contenu

La fédération de types de contenu est une fonctionnalité qui existe depuis SharePoint 2010 grâce au service de Metadonnées gérées (Taxonomy). Le concept est simple, une collection de sites “maître” contient des types de contenu dont certains peuvent être publiés vers les autres collections de sites des applications Web abonnées audit service. La publication vers les sites consommateurs est quant à elle réalisée par un timer job, une instance par application Web.

L’implémentation de ce mécanisme est fort bien documenté sur différents blogs, sur MSDN et les différents sites de Microsoft donc je n’y reviendrai pas.

Néanmoins, que faire si vous souhaitez contrôler en masse un certain nombre de types de contenu ? Imaginez que vous en provisionnez plusieurs dizaines pour un projet et que vous souhaitez qu’ils soient tous publiés dès le début.

Bien sûr, vous pouvez aller sur chacun et cocher Publish, mais ce qui peut être fait par UI peut aussi être fait par API. En l’occurence, les exemples ci-dessous sont réalisés en PowerShell mais le portage en .NET est très simple.

 

Les API se trouvent dans l’assembly Microsoft.SharePoint.Taxonomy.dll et plus précisemment dans la classe ContentTypePublisher du namespace Microsoft.SharePoint.Taxonomy.ContentTypeSync. Depuis un Shell avec les SnapIns SharePoint, rien à faire, c’est déjà chargé.

Voici les opérations que vous pouvez effectuer avec cette classe.

 

Si vous souhaitez déterminer si la publication est activée sur un site, il faut récupérer un SPSite et le passer à la méthode IsContentTypeSharingEnabled :

$site = Get-SPSite http://sharepoint.contoso.com/sites/cthub

[Microsoft.SharePoint.Taxonomy.ContentTypeSync.ContentTypePublisher]::IsContentTypeSharingEnabled($site)

 

La méthode retournant True ou False, on peut alors au besoin activer la fonctionnalité de Content Type Hub :

Enable-SPFeature -Identity [Microsoft.SharePoint.Taxonomy.FeatureIds]::MetadataHub -Url http://sharepoint.contoso.com/sites/cthub

 

Pour pouvoir déterminer si un Type est publié, le publier ou retirer sa publication, il faut instancier la classe ContentTypePublisher là encore en lui passant le SPSite du Content Type Hub : 

$publisher = New-Object Microsoft.SharePoint.Taxonomy.ContentTypeSync.ContentTypePublisher($site)

 

$customDocCT = $site.RootWeb.ContentTypes["My Custom Document"]

$publisher.IsPublished($customDocCT)

 

$publisher.Publish($customDocCT)

$publisher.Unpublish($customDocCT)

 

Appeler Publish sur un Type déjà publié équivaut à cocher Republish dans l’interface SharePoint.

 

Le Job se chargeant des synchronisations étant exécuté toutes les heures, il faudra le relancer manuellement pour profiter des changements immédiatement :

Get-SPTimerJob | ? { $_.Name -eq "MetadataSubscriberTimerJob" } | % { $_.RunNow() }

 

Bonne publication !

Publié mardi 29 octobre 2013 15:06 par Pierrick CATRO-BROUILLET
Classé sous , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires


Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01