Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Function Add-CustomAction
{
param
(
[parameter(Mandatory=$true, ParameterSetName='Site')]
[Microsoft.SharePoint.SPSite]$Site,
[parameter(Mandatory=$true, ParameterSetName='Web')]
[Microsoft.SharePoint.SPWeb]$Web,
[parameter(Mandatory=$true, ParameterSetName='Site')]
[parameter(Mandatory=$true, ParameterSetName='Web')]
[string]$Message,
[parameter(Mandatory=$true, ParameterSetName='Site')]
[parameter(Mandatory=$true, ParameterSetName='Web')]
[string]$ActionName,
[parameter(Mandatory=$false, ParameterSetName='Web')]
[switch]$IncludeSubWebs,
[parameter(Mandatory=$true, ParameterSetName='Site')]
[parameter(Mandatory=$true, ParameterSetName='Web')]
[string][ValidateSet("Red", "Yellow", "Green", "Blue")]$BackGroundColor
)
begin
{
# To avoid quote conflicts
$Message = $Message.Replace( "`"", "'")
$startingSequence = 1100
$JavaScript = @"
function Execute_$($ActionName)_MessageBar_$($PSCmdlet.ParameterSetName)()
{
var st = document.getElementById('$ActionName');
if(st != null)
{
st.style.display = '';
return;
}
st = document.createElement("div");
st.id = "$($ActionName)_MessageBar_$($PSCmdlet.ParameterSetName)";
st.innerHTML = "<div class='ms-status-$($BackGroundColor.ToUpper())' style='padding: 12px 14px 6px; border: 1px solid; font-family: \"Segoe UI\", Tahoma, sans-serif; font-size: 13px; min-height: 24px; font-weight: bold; background-color:Yellow;'>$Message</div>";
document.body.insertBefore(st, document.body.childNodes[0]);
}
// don't show on modal dialog windows
if(!window.location.search.match("[?&]IsDlg=1"))
{
Execute_$($ActionName)_MessageBar_$($PSCmdlet.ParameterSetName)();
}
"@
}
process
{
$customAction = $null
if( $PSCmdlet.ParameterSetName -eq "Site" )
{
Remove-CustomAction -Site $site -ActionName $ActionName | Out-Null
$customAction = $Site.UserCustomActions.Add()
}
else
{
Remove-CustomAction -Web $Web -ActionName $ActionName | Out-Null
$customAction = $Web.UserCustomActions.Add()
}
$customAction.Location = "ScriptLink"
$customAction.Sequence = $startingSequence
$customAction.Title = $ActionName
$customAction.ScriptBlock = $JavaScript
$customAction.Update()
if( $IncludeSubWebs )
{
foreach($w in $Web.Webs)
{
Add-CustomAction -Web $w -Message $Message -ActionName $ActionName -IncludeSubWebs -BackGroundColor $BackGroundColor
}
}
}
end
{
}
}
Function Remove-CustomAction
{
param
(
[parameter(Mandatory=$true, ParameterSetName='Site')]
[Microsoft.SharePoint.SPSite]$Site,
[parameter(Mandatory=$true, ParameterSetName='Web')]
[Microsoft.SharePoint.SPWeb]$Web,
[parameter(Mandatory=$true, ParameterSetName='Site')]
[parameter(Mandatory=$true, ParameterSetName='Web')]
[string]$ActionName
)
begin
{
$existingActions = @()
}
process
{
if( $PSCmdlet.ParameterSetName -eq "Site" )
{
$Site.UserCustomActions | ? { $_.Title -eq $ActionName } | % { $existingActions += $_ }
$existingActions | % { $Site.UserCustomActions.Item($_.Id).Delete() }
}
else
{
$Web.UserCustomActions | ? { $_.Title -eq $ActionName } | % { $existingActions += $_ }
$existingActions
$existingActions | % { $Web.UserCustomActions.Item($_.Id).Delete() }
}
}
end
{
}
}
$sites = get-spsite "http://sharepoint.com/sites/test" #-Limit all -webapplication http://webapplicationurl/
foreach($site in $sites)
{
Add-CustomAction -Site $site -Message “We are planning to migrate this site to Sharepoint 2016 on date ********** The new site URL is 'https://sharepoingonline.com/sites/coc2' " -ActionName "SiteMovedBanner" -BackGroundColor "Red"
#Remove-CustomAction -Site $site -ActionName "SiteMovedBanner"
}
No comments:
Post a Comment