We have several hard-coded links that need to be updated throughout our Intranet. Does anybody have a script or tool to iterate through each Page and search for a specific href link? I would like the URL returned that matches the search query.
- I'm getting below error whenever I try to run your code: Get-SPSite: The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input. please help me.Mahmood Algoul– Mahmood Algoul2018-11-12 05:17:44 +00:00Commented Nov 12, 2018 at 5:17
Add a comment |
1 Answer
I Used Metalogix Content Metrics tool to do link correction. Try metalogix Check link Feature.
Other options, You can write powershell script to get all links from web application. check this blog.
#GET WEB APPLICATION $webApp = Get-SPWebApplication https://portal.com #URL SEARCH STRING FOR ABSOLUTE URL $searchURL = “*http*” #CREATE .CSV FILE WITH HEADINGS FOR HYPERLINKS “siteURL `t” + “Heading `t” + “hyperlink `t” + “Path” >> HYPERLINKS.csv #FOREACH LOOP – LOOPS THROUGH ALL WEBS AND SUBSITES OF WEB APPLICATION foreach ($web in $webApp | Get-SPSite -Limit All | Get-SPWeb -Limit All) { #GET PUBLISHING WEB FOR ALL WEBS IN WEB APPLICATION $pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web) #GET GLOBAL NAVIGATION NODES $nav = $pubWeb.Navigation.GlobalNavigationNodes #GET QUICK LAUNCH NAVIGATION NODES $nodes = $web.Navigation.QuickLaunch #FOREACH LOOP – LOOPS THROUGH ALL GLOBAL NAVIGATION HEADINGS. foreach ($qlHeading in $nav) { #GET GLOBAL NAVIGATION HEADING CHILDREN. $qlLibraries = $qlHeading.Children #FOREACH LOOP – LOOPS THROUGH ALL CHILDREN (LINKS) IN GLOBAL NAVIGATION HEADINGS. foreach ($lib in $qlLibraries) { #IF STATEMENT TO CHECK IF HYPERLINK IS NOT NULL. if ($lib.Url -ne $null) { write-host $qlHeading.Title write-host $lib.Url #IF STATEMENT TO CHECK HYPERLINK TO SEE IF IT MATCHES searchURL string. if ($lib.Url -like $searchURL) { #IF HYPERLINK MATCHES THE $searchURL STRING THEN STORE “AbsoluteURL” STRING IN $path VARIABLE. $path = “AbsoluteURL” } else #IF HYPERLINK DOES NOT MATCH THE $searchURL STRING THEN STORE “RelativeURL” STRING IN $path VARIABLE. { $path = “RelativeURL” } #WRITE GLOBAL NAVIGATION NODE RESULTS TO HYPERLINKS.csv FILE. $web.Url + “`t” + $qlHeading.Title + “`t” + $lib.Url + “`t” + $path >> HYPERLINKS.csv } } } #FOREACH LOOP – LOOPS THROUGH ALL QUICK LAUNCH NAVIGATION NODES foreach ($node in $nodes) { write-host $node.Title write-host $node.Url #IF STATEMENT TO CHECK HYPERLINK TO SEE IF IT MATCHES searchURL string. if ($node.Url -like $searchURL) { #IF HYPERLINK MATCHES THE $searchURL STRING THEN STORE “AbsoluteURL” STRING IN $path VARIABLE. $path = “AbsoluteURL” } else { #IF HYPERLINK DOES NOT MATCH THE $searchURL STRING THEN STORE “RelativeURL” STRING IN $path VARIABLE. $path = “RelativeURL” } #WRITE QUICK LAUNCH NAVIGATION NODE RESULTS TO HYPERLINKS.csv FILE. $web.Url + “`t” + $qlHeading.Title + “`t” + $lib.Url + “`t” + $path >> HYPERLINKS.csv } }