public/Add-SkylineContentEditorWebPart.ps1
Function Add-SkylineContentEditorWebPart { <# .SYNOPSIS Uploads a content editor webpart to the Web Part Gallery .DESCRIPTION Uploads a content editor webpart to the Web Part Gallery .EXAMPLE Add new content editor web part with the group 'Intranet' and content link 'https://site.sharepoint.com/style library/webparts/widget1.html' Add-SkylineContentEditorWebPart -Title "Widget1" -Description "The best widget" -Group "Intranet" -ContentLink "https://site.sharepoint.com/style library/webparts/widget1.html" .PARAMETER Title Name of the webpart .PARAMETER ContentLink Absolute path of of the Content Link property Example: "https://site.sharepoint.com/style library/webparts/widget1.html" .PARAMETER Description Description of the webpart .PARAMETER Group Group which the webpart should belong to. Default is 'Custom' .PARAMETER FileName File name of the webpart file that gets uploaded to the web part gallery. File extension will be added if not included. Default is Title parameter with .dwp extension (e.g. -Title "MyWebPart" becomes -FileName "MyWebPart.dwp") .PARAMETER Web The web to apply the command to. Omit this parameter to use the current web. #> [cmdletbinding()] param( [parameter(Mandatory = $True)] [string]$Title = '', [parameter(Mandatory = $True)] [string]$ContentLink = '', [parameter(Mandatory = $False)] [string]$Description = '', [parameter(Mandatory = $False)] [string]$Group = 'Custom', [parameter(Mandatory = $False)] [string]$FileName = '', [Microsoft.SharePoint.Client.Web]$Web ) Process { Write-Debug ( "Running $($MyInvocation.MyCommand).`n" + "PSBoundParameters:`n$($PSBoundParameters | Format-List | Out-String)") #Stream varibles $DWPStream = $null $DWPStreamWriter = $null Try { $PSBoundParameters.Remove("Title") | Out-Null $PSBoundParameters.Remove("ContentLink") | Out-Null $PSBoundParameters.Remove("Description") | Out-Null $PSBoundParameters.Remove("FileName") | Out-Null #Get Web Part DWP XML and replace tokens $WebPartTemplate = Get-Content ".\assets\ContentEditor.dwp" -Raw $WebPartTemplate = $WebPartTemplate.Replace("{{WebPartTitle}}", $Title) $WebPartTemplate = $WebPartTemplate.Replace("{{WebPartDescription}}", $Description) $WebPartTemplate = $WebPartTemplate.Replace("{{ContentLink}}", $ContentLink) #Ensure FileName is set if ([String]::IsNullOrEmpty($FileName)) { $FileName = $Title } #Ensure FileName ends with .dwp extension if (-Not $FileName.ToLower().EndsWith('.dwp')) { $FileName = "$($FileName).dwp" } #Open memory stream of DWP XML $DWPStream = New-Object System.IO.MemoryStream $DWPStreamWriter = New-Object System.IO.StreamWriter $DWPStream $DWPStreamWriter.WriteLine($WebPartTemplate) $DWPStreamWriter.Flush() $DWPStream.Seek(0,"Begin") #Upload DWP XML to webpart gallery Add-SkylineWebPart -FileName $FileName -Stream $DWPStream @PSBoundParameters } Catch { Throw $_ } Finally { #Dispose DWP stream objects if ($DWPStream -ne $null) { $DWPStream.Dispose() } if ($DWPStreamWriter -ne $null) { $DWPStreamWriter.Dispose() } } } } |