While there are about 500 available cmdlets right OOTB in SharePoint 2010, I still find things from time to time that don’t have a cmdlet readily available. A great example is finding available List or Library templates.
I’m currently working on a project where I’m going to need to create a LOT of libraries of all different types. I could’ve done a lot of clicking, but who would want to do that?!
Instead, I used PowerShell and the SP Object Model to automate the retrieval of available list templates as well as the creation of lists based on said templates. This blog post will focus solely on getting the available templates. Note: Depending on which site and web features are activated, as well as which SKU you have – your templates will vary.
Here is the function:
function Get-SPListTemplates { <# .Synopsis Use Get-SPListTemplates to obtain available list and library templates. .Description This advanced PowerShell function uses the SharePoint Object Model to retrieve available list and library templates in a SharePoint site specifified in the Web parameter. .Example C:\PS>Get-SPListTemplates -Web http://intranet This example retrieves available list templates in the http://intranet site. .Example C:\PS>Get-SPListTemplates -Web http://intranet -Library This example retrieves available library templates in the http://intranet site. .Notes Use this advanced function to retrieve list and library templates. .Link http://www.iccblogs.com/blogs/rdennis http://twitter.com/SharePointRyan .Parameter Web The URL of an SPWeb. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipeline=$true)] [string]$Web, [Parameter(Mandatory=$false)] [switch]$Library ) Start-SPAssignment -Global $SPWeb = Get-SPWeb -Identity $Web if ($Library) { $Templates = $SPWeb.ListTemplates | Where-Object {$_.Name -match "Library"} | Format-List -Property Name } else { $Templates = $SPWeb.ListTemplates | Where-Object {$_.Name -notmatch "Library"} | Format-List -Property Name } Write-Host "The following templates are available:" $($Templates) $SPWeb.Dispose() Stop-SPAssignment -Global }
Salve! I was looking at this, but it does not fetch custom lists nor libraries. I am trying to write a powershell script to create a new library from a library template that I used by exporting a library that I made.
I have not updated the script to handle custom lists and libraries, but here is the code to fetch a custom list template:
$Site = Get-SPSite http://
$Web = $Site.RootWeb
$ListTemplate = “ListTemplateName”
$listTemplates = $Site.GetCustomListTemplates($Web)
$Template = $listTemplates | Where-Object {$_.InternalName -eq $ListTemplate}
Hope this helps!
Ryan
You are very kind, Mr. Dennis. Now, I supply my site, and the ListTemplateName being the file name of my custom template, but it doesn’t return anything. I think I am missing something.
Ah, I had the name of the template wrong… Got it now! Thank you, Mr. Dennis.