Description

This Advanced PowerShell Function uses the ListTemplates Property of of an SPWeb Object to retrieve available SharePoint 2010 List and Library Templates.  The function features 2 parameters: Web and Library.  The Web parameter is used to provide a URL of an SPWeb, and the Library parameter is a switch - and if set it provides library templates. Comment-based help is included.

Script

PowerShell
Edit|Remove
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 
}