[SharePoint][PowerShell] Appliquer un template custom à un site web à sa création.
Le contexte
L’un des meilleurs amis du SharePointeur est sans nul doute PowerShell. Il offre à peu près tout ce qui est nécessaire à l’administration d’une ferme, au déploiement de projets, etc.
Une tâche revient régulièrement lors de nos développements : créer des collections de sites et des sites web. PowerShell nous permet de les créer facilement grâces aux cmdlets spécifiques : New-SPSite et New-SPWeb.
Développement avec Site & WebTemplate custom
Encore une fois, c’est une situation récurrente que de se trouver en présence de SiteTemplate et WebTemplate personnalisés.
Il est donc utile de pouvoir appliquer automatiquement ces templates directement aux sites que l’on souhaite créer par powershell.
Ca tombe bien, les cmdlets ont un paramètre qui permet de spécifer le template souhaité : “-Template”.
Et là : Problème ! Lorsqu’on exécute la cmdlet avec bon paramètres, on obtient une erreur.
PS C:\Users\Admiistrator> $SPWeb = New-SPWeb -Url
http://{monsite}/test2 -Name monsite -Template "{0c6caf23-bb65-4e34-88c2-8d7d0e9dccca}#WebTemplate"
WARNING: Template is not found and is not applied. C’est tout à fait normal. La commande va chercher dans la liste des templates globaux. (On peut en avoir une liste exhausitve en exécutant la commande suivante : Get-SPWebTemplate | Sort-Object "Name")
Comment l’appliquer ?
Pour appliquer un template après la création, il faut le créer sans lui spécifier de tempalte à la création. De même s’il n’a pas trouver le template, il créera le site sans template.
Il suffira après d’appliquer ce template après-coup grâce à la méthode ApplyWebTemplate de l’objet SPWeb.
Le code complet pour créer un site avec un template custom :
PS C:\Users\Admiistrator> $SPWeb = New-SPWeb -Url
http://{monsite}/test2 -Name monsite
$SPWeb.ApplyWebTemplate("{0c6caf23-bb65-4e34-88c2-8d7d0e9dccca}#WebTemplate")
$SPWeb.Dispose()
Jicay
PS: Petit clin d’oeil à MatN qui a passé du temps sur ce problème 
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 :