How to get the Content editor contents(data) using PNP powershell in sharepoint 2013

Bhaskar Padmanabhan 1 Reputation point
2021-06-22T10:08:18.523+00:00

I'm trying to get the contents of Content editor webpart using PNP PowerShell in SharePoint 2013 on-premise Server.
Appreciate if anyone can provide any lead.

SharePoint Server Development
SharePoint Server Development
SharePoint Server: A family of Microsoft on-premises document management and storage systems.Development: The process of researching, productizing, and refining new or existing technologies.
1,573 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Echo Du_MSFT 17,116 Reputation points
    2021-06-23T05:54:46.563+00:00

    Hello @Bhaskar Padmanabhan ,

    Welcome to Q&A Forum!

    Based on my research and testing, we cannot get the Content Editor webpart contents(data) using PNP powershell in sharepoint 2013.

    You can use the below PowerShell command to find CEWP’s with script in your SharePoint sites.

    [CmdletBinding()]  
    param([Parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false,HelpMessage="Specifies the URL of the Web Application.")]   
          [string]$WebApplication)  
       
    function Get-CEWP([string]$url)  
    {  
       $manager = $web.GetLimitedWebPartManager($url, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)  
       $webParts = $manager.WebParts  
       if ($webParts.Count -ne 0)  
       {  
          foreach ($webPart in $webParts)  
          {  
             if ($webPart.GetType() -eq [Microsoft.SharePoint.WebPartPages.ContentEditorWebPart])  
             {  
                if ($webPart.ContentLink.Length -gt 0)  
                {  
                   # Check file in ContentLink for script tags  
                   $file = $web.GetFile($webPart.ContentLink)  
                   $data = $file.OpenBinary()  
                   $encode = New-Object System.Text.ASCIIEncoding  
                   $contents = $encode.GetString($data)  
                   if ($contents.ToLower().Contains("<script>"))  
                   {  
                       Write-Output "$($web.Url)/$url (CONTENTLINK)"  
                   }  
                   break  
                }  
       
                if ($webPart.Content.InnerText.Contains("<script>"))  
                {  
                   Write-Output "$($web.Url)/$url (HTML)"  
                }  
             }  
          }  
       }  
    }  
       
    # Load the SharePoint PowerShell snapin if needed  
    if ((Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null)  
    {  
       Write-Host "Loading the SharePoint PowerShell snapin..."  
       Add-PSSnapin Microsoft.SharePoint.PowerShell  
    }     
          
    $SPWebApp = Get-SPWebApplication $WebApplication -EA SilentlyContinue  
    if ($SPWebApp -eq $null)  
    {  
       Write-Error "$WebApplication is not a valid SharePoint Web application. Aborting execution!"  
    }  
    else  
    {  
       Write-Host -ForegroundColor Green "Please wait... gathering data."  
       $sites = $SPWebApp.Sites  
       foreach ($site in $sites)  
       {  
          try  
          {  
             $webs = $site.AllWebs  
             foreach ($web in $webs)  
             {  
                try  
                {  
                   # For publishingwebs, check all publishingpages  
                   if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($web))  
                   {  
                      $pubweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)  
                      $pages = $pubweb.GetPublishingPages()  
                      foreach($page in $pages)  
                      {  
                         Get-CEWP -url $page.Url  
                      }  
                   }  
                          
                   # Libraries and lists have views and forms which can contain webparts... let's get them also  
                   $lists = $web.lists  
                   foreach ($list in $lists)  
                   {  
                      # Check the views  
                      $views = $list.Views  
                      foreach ($view in $views)  
                      {  
                         Get-CEWP -url $view.Url  
                      }  
                              
                      # Check the forms  
                      $forms = $list.Forms  
                      foreach ($form in $forms)  
                      {  
                         Get-CEWP -url $form.Url  
                      }  
                   }  
                }  
                catch {}  
                finally { $web.Dispose() }        
             }  
          }  
          catch {}  
          finally { $site.Dispose() }  
       }  
    }  
    

    108443-3.png

    Reference:

    http://blog.kuppens-switsers.net/sharepoint/finding-cewps-with-script-in-your-sharepoint-sites/

    Thanks,
    Echo Du

    =============================================

    If an Answer is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.