Here’s a great little script that I used to list out all of the Custom Actions available in a farm. What’s great about the script is that it returns the CustomActions in XML so you can vary the output. My favorite is using the Out-GridView cmdlet in Windows PowerShell 2.0. From there can you can do searches, sorts, filters, etc.
PS C:\> [xml]$ca = Get-SPCustomAction
PS C:\> $ca.CustomActions.CustomAction | Out-GridView
function Get-SPCustomAction { trap [Exception] { continue; } cls $null = [system.reflection.assembly]::loadwithpartialname("Microsoft.Sharepoint") $null = [system.reflection.assembly]::loadwithpartialname("Microsoft.Sharepoint.Administration") $null = [system.reflection.assembly]::loadwithpartialname("System.Web") [string]$xmlString = "<?xml version=""1.0"" encoding=""utf-8"" ?><CustomActions>" $farm = [microsoft.sharepoint.administration.spfarm]::local foreach ($featureDef in $farm.FeatureDefinitions) { trap [Exception] { continue; } foreach ($elementDef in $featureDef.GetElementDefinitions([System.Globalization.CultureInfo]::CurrentCulture)) { trap [Exception] { continue; } $node = $elementDef.XmlDefinition; if ($node.Name -eq "CustomAction") { trap [Exception] { write-error $($_.Exception.Message); continue; } $xmlString += "<CustomAction Id=""" + $node.Id + """ GroupId=""" + $node.GroupId + """ Location=""" + $node.Location + """ Sequence=""" + $node.Sequence + """ Title=""" + $node.Title + """ " if($node.UrlAction -ne $null -and $node.UrlAction.OuterXml -ne "" -and $node.UrlAction.Url -ne $null -and $node.UrlAction.Url -ne "") { $xmlString += "Url=""" + [System.Web.HttpUtility]::UrlEncode($node.UrlAction.Url.ToString()) + """ " } $xmlString += " xmlns=""http://schemas.microsoft.com/sharepoint/""/>" } } } $xmlString += "</CustomActions>" #$xmlString = $xmlString.Replace("&", " ") Write-Output $xmlString }
Then you can filter down to a “Location” and do a partial name “Id” search for what you might be looking for.