Skip to content

Instantly share code, notes, and snippets.

@michaellwest
Last active August 3, 2021 07:46
Show Gist options
  • Save michaellwest/f563b0b3597f6c0a75d6 to your computer and use it in GitHub Desktop.
Save michaellwest/f563b0b3597f6c0a75d6 to your computer and use it in GitHub Desktop.
Demonstrates how to relink images using Sitecore PowerShell Extensions. Comment included by Dylan shows how to Remove the link and remove the item.
@dylanmccurry-sage
Copy link

dylanmccurry-sage commented Feb 11, 2019

Just found this gist incredibly useful, along with this stack overflow post: https://sitecore.stackexchange.com/questions/1297/removing-all-references-to-an-item-using-ootb-tools/1307

It has resulted in this function that I'm using:

function Remove-ItemLink {
    param([Item]$item)
    
    $linkDb = [Sitecore.Globals]::LinkDatabase

    $links = Get-ItemReferrer -Item $item -ItemLink

    foreach($link in $links) {
        $linkedItem = Get-Item -Path master:\ -ID $link.SourceItemID 
        $itemField = $linkedItem.Fields[$link.SourceFieldID]
        $field = [Sitecore.Data.Fields.FieldTypeManager]::GetField($itemField)

        $linkedItem.Editing.BeginEdit()
        $field.RemoveLink($link)
        $linkedItem.Editing.EndEdit()
    }
}

# Example usage: delete items along with their references that have passed a certain date defined by a 'date' field
$today = Get-Date
$todayIsoDate = [Sitecore.DateUtil]::ToIsoDate($today)
$itemsToDelete = Get-Item -Path master: -Query "/sitecore/system/Modules/Mysite/Service Schedules/*[@date < '$($todayIsoDate)']"

Foreach($item in $itemsToDelete) {
    Write-Host "Cleaning up $($itemsToDelete.Paths.Path)"
    Remove-ItemLink -Item $item
    Remove-Item -Path $item.Paths.Path
}

@michaellwest
Copy link
Author

Thanks for sharing @dylanmccurry-sage!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment