Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Demonstrates how to relink images using Sitecore PowerShell Extensions. Comment included by Dylan shows how to Remove the link and remove the item.
@AdamNaj

This comment has been minimized.

Copy link

commented Jun 3, 2014

I think it would be super useful if we added a couple of commandlets, based on that brilliant bit of code
like Get-ItemReferrers & possibly Relink-Item. You did it again! I didn't think it would be either that succinct or even viable!

Also - great use case scenario!

@michaellwest

This comment has been minimized.

Copy link
Owner Author

commented Sep 7, 2017

Updated to use Get-ItemReferrer and Out-Null.

@AlexKasaku

This comment has been minimized.

Copy link

commented Oct 1, 2018

Great script! Can I suggest this so that it works in multilingual scenarios:

$linkedItem = Get-Item -Path master:\ -ID $link.SourceItemID -Language $link.SourceItemLanguage

@dylanmccurry-sage

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link
Owner Author

commented Feb 11, 2019

Thanks for sharing @dylanmccurry-sage!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.