Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phaniav/1291c0aa69b2c24b0a08fed6a801f493 to your computer and use it in GitHub Desktop.
Save phaniav/1291c0aa69b2c24b0a08fed6a801f493 to your computer and use it in GitHub Desktop.
Sitecore Powershell examples
#Use this if you are hitting max items limit and can't change this setting. Warning can be very slow!
function ProcessChildren($path)
{
$childItems = Get-Item master: -Query $path"/*"
$childItems | ForEach-Object {
Write-Host "Item path: " $_.FullPath
ProcessChildren($_.FullPath)
}
}
ProcessChildren("/sitecore/content");
$items = Get-Item master:/content/home//*
$items | ForEach-Object {
$_.Editing.BeginEdit()
$_["Title"] = $_.Fields["Title"].toString() + " changed value";
$_.Editing.EndEdit();
}
$item = Get-Item master:/content/home
$newTemplate = [Sitecore.Configuration.Factory]::GetDatabase("master").Templates["Sample/Sample Item"];
$item.ChangeTemplate($newTemplate)
$dateTime = ([sitecore.dateutil]::IsoDateToDateTime($item["My Date Field"])
Write-Host $dateTime.ToString("dd MMMM yyyy")
#Output 10 September 2016
$item = New-Item "master:/content/home/my new sample item" -type "Sample/Sample Item"
$csv = Import-Csv "C:\temp\my-csv-file.csv"
foreach($row in $csv)
{
if ($row -eq $csv[0])
{
#Skip the first row as it contains the column headings in your CSV
continue;
}
#New-User docs: https://doc.sitecorepowershell.com/appendix/commands/New-User.html
#Include domain in username to specify the target domain (e.g extranet\adam)
New-User -Identity $row."Username" -Enabled -Password $row."Password" -Email $row."Email" -FullName $row."FullName"
}
$item = Get-Item -Path master: -Query "/sitecore/content//*[@@templatename !='Sample Item']"
#Or
$item = Get-Item -Path master: -Query "/sitecore/content//*" | Where-Object { $_.TemplateName -ne "Sample Item" -and $_.TemplateName -ne "Local Datasource Folder" }
$xmlWriter = New-Object System.XMl.XmlTextWriter('c:\temp\sitemap.xml',$Null)
$xmlWriter.Formatting = 'Indented'
$xmlWriter.Indentation = 1
$XmlWriter.IndentChar = "`t"
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteStartElement('urlset')
$XmlWriter.WriteAttributeString('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9')
$everythingUnderHome = Get-Item master: -Query "/sitecore/content/Home//*"
$baseUrl = "https://example.com"
$everythingUnderHome | ForEach-Object {
$url = $baseUrl + [Sitecore.Links.LinkManager]::GetItemUrl($_)
$xmlWriter.WriteStartElement('url')
$xmlWriter.WriteElementString('loc',$url)
$xmlWriter.WriteEndElement()
}
$xmlWriter.WriteEndElement()
$xmlWriter.WriteEndDocument()
$xmlWriter.Flush()
$xmlWriter.Close()
$item = Get-Item master:/content/home
$item.Editing.BeginEdit();
$item["Title"] = "New title for the home item!";
$item.Editing.EndEdit();
$allSitecoreUsers = Get-User -Filter "sitecore\*"
$allSitecoreUsers | ForEach-Object {
Write-Host $_.Name
}
$item = Get-Item master:/content/home/old/item
#Will move and place this item under the target new
Move-Item -Path $item.ItemPath "master:\sitecore\content\Home\new";
[Sitecore.Data.Fields.LinkField]$field = $_.Fields["Linked item"]
Write-Host ($field | Format-Table | Out-String)
Get-Item master: -Query "/sitecore/content/home//*" | Show-ListView -Property Name,TemplateName
$csv = Import-Csv "C:\temp\my-csv-file.csv"
foreach($row in $csv)
{
if ($row -eq $csv[0])
{
#Skip the first row as it contains the column headings in your CSV
continue;
}
#Output value for Column1 and Column2
Write-Host $row."Column1";
Write-Host $row."Column2";
}
$templateId = [ID]::Parse("{F4FB6125-F113-4373-8AA2-4648C2C1960E}")
$homeId = [ID]::Parse("{GUID}")
$language = "en"
$props = @{
Index = "sitecore_master_index"
Where = 'TemplateId = @0 And Language=@1 And Paths.Contains(@2)'
WhereValues = $templateId, $language, $homeId
}
Find-Item @props | Initialize-Item | Show-ListView -Property `
@{Label="Path"; Expression={$_.Paths.FullPath} },
@{Label="UrlList"; Expression={$_.Fields["UrlMapping"]} }
$everythingUnderHome = Get-Item master: -Query "/sitecore/content/Home//*"
$everythingUnderHome | ForEach-Object {
Write-Host "Item name: " + $_.Name
}
$items = Get-Item master:/content/home//* | Where-Object { $_.Fields["__Final Renderings"] -like "*col-huge*" }
$items | ForEach-Object {
Write-Host $_.Fields["__Final Renderings"]
$_.Editing.BeginEdit()
$_["__Final Renderings"] = $_.Fields["__Final Renderings"].toString().replace("col-huge", "col-wide-1");
$_.Editing.EndEdit();
Write-Host $_.Fields["__Final Renderings"]
}
$everythingUnderHome = Get-Item master: -Query "/sitecore/content/Home//*"
$outputFilePath = "C:\temp\my-csv-file.csv"
$results = @();
$everythingUnderHome | ForEach-Object {
$properties = @{
Name = $_.Name
Template = $_.TemplateName
Path = $_.ItemPath
}
$results += New-Object psobject -Property $properties
}
$Results | Select-Object Name,Template,Path | Export-Csv -notypeinformation -Path $outputFilePath
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment