The title pretty much says it all - I've looked at the docs but I just keep finding Get-Item and Get-ItemTempate.

Lets say I have a template with id 123456, I want to get all items that are using this template. How would I do that?

  • How would you do that in C#? – Alan Płócieniak Nov 26 at 15:25
  • Something like allItems.Where(p => p.TemplateIdList.Contains("123456")); Let me see if I can powershell that! - Disclaimer - New to Sitecore so I don't know what exists and what doesn't... – Rick Nov 26 at 15:33
up vote 3 down vote accepted

This should do it for you.

$defaultPath = "/sitecore/content"
[Sitecore.Data.ID]$articleId = "{03360FC1-B4C0-4770-9E1D-79E8317B74DD}"

$articles = Find-Item -Index sitecore_master_index `
   -Where 'TemplateId = @0 and Path.StartsWith(@1)' `
   -WhereValues $articleId, $defaultPath | Initialize-Item

Another way using template name and Criteria.

$articles = Find-Item `
   -Index sitecore_master_index `
   -Criteria @{Filter = "Equals"; Field = "_templatename"; Value = "Article"},
   @{Filter = "Equals"; Field = "_language"; Value = "en"},
   @{Filter = "StartsWith"; Field = "_fullpath"; Value = "/sitecore/content" } 
  • If I do a Write-Host $_.FullPath on everything in $articles, then I get quite a log of duplicates. Any idea why this would happen? – Rick Nov 26 at 16:52
  • (using the first example btw) – Rick Nov 26 at 17:08
  • multiple languages? This is is reading directly from the index, so we have to know why there are multiple items in your index. – Chris Auer Nov 26 at 17:18
  • 1
    Ah potentially - I'll investigate if that is the case. Thanks – Rick Nov 26 at 17:18

I would recommend you use the Get-ItemReferrer command. This is based on the Link Database and should be extremely fast.

A similar question was asked here.

$sampleItemTemplateId = "{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}"
$sampleItemTemplateItem = Get-Item -Path "master:" -ID $sampleItemTemplateId

Get-ItemReferrer -Item $sampleItemTemplateItem

As you can see below, all referrers are returned. You can then filter out with Where-Object if you want to exclude content, media, templates, etc.

enter image description here

  • Nice one Mike. Didn't know that existed. – Chris Auer Nov 26 at 17:12

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.