Upgrading portal or changing its domain name leaves old hyperlink paths in the Content Editor WebParts and there is no way to upgrade hyperlinks such as just only by changing Managed paths entries. Luckily, we modified a script written by Johnny Bouder (link here) according to update all hyperlink paths to correct format.
param([string]$url,[string]$oldpath,[string]$newpath) [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | out-null; [System.Reflection.Assembly]::LoadWithPartialName("System.Xml"); function SP-Web-CleanCEWPContent ($w) { $file = $w.GetFile("default.aspx"); if ($file.Exists) { $webPartManager = $w.GetLimitedWebPartManager($file.Url,[System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared); $webParts = $webPartManager.WebParts; foreach($webPart in $webParts) { $checkString = "*" + $oldpath + "*"; if ($webPart.GetType() -eq [Microsoft.SharePoint.WebPartPages.ContentEditorWebPart] -and $webPart.Content.InnerText -like $checkString ) { $oldElement = $webPart.Content; $oldText = $webPart.Content.InnerText; $xmlDoc = New-Object System.Xml.XmlDocument; $xmlElement = $xmlDoc.CreateElement("MyElement"); $xmlElement.InnerText = $oldText.Replace($oldpath,$newpath); $webPart.Content = $xmlElement; $webPartManager.SaveChanges($webPart); Write-Host -ForegroundColor Red "Updating web at "$w.Url; } } } } function SP-ProcessSubwebs($ww) { SP-Web-CleanCEWPContent($ww); Write-Host("Processing web at " + $ww.Url); if ($ww.Webs.Count -gt 0) { foreach($sw in $ww.Webs) { SP-ProcessSubwebs($sw); } } } $site = New-Object Microsoft.SharePoint.SPSite($url); $web = $site.RootWeb; SP-ProcessSubwebs($web); |
Easy usage, just only type ./script.ps1 -url http://newPortalAddress -oldpath http://oldPortalAddress -newpath http://newPortalAddress .
Nejnovější komentáře