Thursday, June 9, 2022

Banner on sharepoint sites.

 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