Rubriky
News Portals Powershell SharePoint

SharePoint: Replace hyperlink paths in CEWP by using Powershell

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 .

Rubriky
Powershell SharePoint

SharePoint: Powershell Get-SPSite in WSS 3.0

This simple Powershell snipplet gets the SPSite site instance in Windows SharePoint Services 3.0. Script also traps the exception in case of non-existence of SharePoint
site located at $url.

function global:Get-SPSite([string]$url) {
$site = $null
trap [Exception] {
continue;
}
$site = new-object Microsoft.SharePoint.SPSite($url)
return $site
}

… and here is an implementation:

$site = Get-SPSite($URL)
if ($site) {
#your code
}
else {
Write-Host -ForegroundColor Red "ERROR: Site $URL has not been found"
}