I wrote this a while back. The script includes a helper function for creating new templates. Feel free to modify this to include adding Standard Values.
function New-TemplateItem {
param(
[ValidateNotNullOrEmpty()]
[string]$Path,
[string]$Icon,
[string]$BaseTemplate,
[PSCustomObject[]]$Fields
)
$itemTemplate = New-Item -Path $Path -ItemType "/sitecore/templates/System/Templates/Template"
$itemTemplate."__Base Template" = "{1930BBEB-7805-471A-A3BE-4858AC7CF696}"
if($BaseTemplate) {
$itemTemplate."__Base Template" = $BaseTemplate
}
if($Icon) {
$itemTemplate."__Icon" = $Icon
}
if($Fields) {
foreach($field in $fields) {
$sectionPath = "$($Path)/Data"
if($field.Section) {
$sectionPath = "$($Path)/$($field.Section)"
}
if(-not(Test-Path -Path $sectionPath)) {
New-Item -Path $sectionPath -ItemType "/sitecore/templates/System/Templates/Template section" | Out-Null
}
$fieldItem = New-Item -Path "$($sectionPath)/$($field.Name)" -ItemType "/sitecore/templates/System/Templates/Template field"
$fieldItem.BeginEdit() | Out-Null
$fieldItem["Type"] = $field.Type
$fieldItem["Title"] = $field.Title
$fieldItem["Source"] = $field.Source
$fieldItem.EndEdit() | Out-Null
}
}
}
$fields = @(
[PSCustomObject]@{
"Name" = "Artist"
"Title" = "Artist Title"
"Type" = "Single-Line Text"
"Section" = "Details"
},
[PSCustomObject]@{
"Name" = "Description"
"Title" = "Artist Description"
"Type" = "Rich Text"
"Section" = "Details"
"Source" = "/sitecore/system/Settings/Html Editor Profiles/Rich Text Default"
}
)
$templatePath = "master:/sitecore/templates/User Defined/SetList"
$baseTemplateIds = "{1930BBEB-7805-471A-A3BE-4858AC7CF696}"
Remove-Item -Path $templatePath -Recurse
New-TemplateItem -Path $templatePath -Icon "office/32x32/earth_music.png" -BaseTemplate $baseTemplateIds -Fields $fields