Como alterar o Wiki de Layout de Página do SharePoint 2010 usando o Powershell?
-
10-12-2019 - |
Pergunta
Eu gostaria de criar uma página wiki usando o powershell e gostaria de definir "Duas colunas com Cabeçalho" como o layout da página em vez do padrão de "Uma Coluna" layout.Capaz de criar a página, no entanto não sei como atualizar o layout da página.Gentilmente ajuda.
nota:Publicação funcionalidade não está activada na web.
## Main Sharepoint Site
$site = "http://Webapplication";
## Sharepoint Wiki sub-site
$web = "/subsite";
## Library of Wiki Pages
$Library = "Site Pages";
## Name of the Wiki Pages
$pageName = "NewHomePage.aspx";
## Setup Basic sites and pages
$spSite = Get-SPSite $site;
$spWeb = Get-SPWeb ($site+$web);
$spLibrary = $spWeb.Lists[$Library];
$pageFolder = $spLibrary.RootFolder;
$spWIKIPage = $pageFolder.Files.Add($pageFolder.ServerRelativeUrl +"/" + $pageName, [Microsoft.SharePoint.SPTemplateFileType]::WikiPage);
$spWIKIItem = $spWIKIPage.Item;
$spWIKIItem[[Microsoft.SharePoint.SPBuiltInFieldId]::WikiField] = "Template Preview" ;
$spWIKIItem.UpdateOverwriteVersion();
# Dispose the Objects
$spWeb.Dispose();
$spSite.Dispose();
Ele funciona se o conteúdo html são adicionados diretamente.No entanto faz qualquer impacto no desempenho?
### Variables ###
## Main Sharepoint Site
$site = "http://webapplication";
## Sharepoint Wiki sub-site
$web = "/subsite";
## Library of Wiki Pages
$Library = "Site Pages";
## Name of the Wiki Pages
$pageName = "NewHomePage.aspx";
## Layout of the Wiki Pages
$pageLayout = '<div class="ExternalClassCFBA8CDC81B34264A81647E2260499B4"><table id="layoutsTable" style="width:100%"><tbody><tr style="vertical-align:top"><td colspan="2"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"><div class="ExternalClass84D2F659CA274C02B313B2039A7DCEF6">Template Preview</div></div></div></td></tr><tr style="vertical-align:top"><td style="width:49.95%"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"><div class="ExternalClass84D2F659CA274C02B313B2039A7DCEF6"> </div></div> </div></td><td style="width:49.95%"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"></div> </div></td></tr></tbody></table><span id="layoutsData" style="display:none">true,false,2</span></div>';
## Setup Basic sites and pages
$spSite = Get-SPSite $site;
$spWeb = Get-SPWeb ($site+$web);
$spLibrary = $spWeb.Lists[$Library];
$pageFolder = $spLibrary.RootFolder;
$spWIKIPage = $pageFolder.Files.Add($pageFolder.ServerRelativeUrl +"/" + $pageName, [Microsoft.SharePoint.SPTemplateFileType]::WikiPage);
$spWIKIPage.Title = $web.Title + " Home Page";
$spWIKIItem = $spWIKIPage.Item;
$spWIKIItem[[Microsoft.SharePoint.SPBuiltInFieldId]::WikiField] = $pageLayout;
$spWIKIItem.UpdateOverwriteVersion();
# Dispose the Objects
$spWeb.Dispose();
$spSite.Dispose();
Solução
Para especificar o Layout de Página ao criar a página Wiki usar OOTB SPField PublishingPageLayout
, por exemplo:
$wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page"
Como criar página Wiki no SharePoint 2010
Abaixo é fornecido o código para a criação de páginas wiki em SharePoint 2010:
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.dll'
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.Runtime.dll'
function CreateWikiPage()
{
param(
[Parameter(Mandatory=$true)][string]$webUrl,
[Parameter(Mandatory=$false)][System.Net.NetworkCredential]$credentials,
[Parameter(Mandatory=$true)][string]$pageName,
[Parameter(Mandatory=$true)][string]$pageContent
)
$templateRedirectionPageMarkup = '<%@ Page Inherits="Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %> <%@ Reference VirtualPath="~TemplatePageUrl" %> <%@ Reference VirtualPath="~masterurl/custom.master" %>';
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl)
$ctx.Credentials = $credentials
$wikiPages = $ctx.Web.Lists.GetByTitle("Pages")
$load = [Microsoft.SharePoint.Client.ClientContext].GetMethod("Load")
$listLoad = $load.MakeGenericMethod([Microsoft.SharePoint.Client.List])
$listLoad.Invoke($ctx,@($wikiPages,$null))
$ctx.ExecuteQuery()
$file = New-Object Microsoft.SharePoint.Client.FileCreationInformation
$file.Url = $pageName
$file.Content = [System.Text.Encoding]::UTF8.GetBytes($templateRedirectionPageMarkup)
$file.Overwrite = $true
$wikiFile = $wikiPages.RootFolder.Files.Add($file)
$fileLoad = $load.MakeGenericMethod([Microsoft.SharePoint.Client.File])
$fileLoad.Invoke($ctx,@($wikiFile,$null))
$wikiPage = $wikiFile.ListItemAllFields
$wikiPage["PublishingPageContent"] = $pageContent
$wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page"
$wikiPage.Update()
$ctx.ExecuteQuery();
}
$credentials = New-Object System.Net.NetworkCredential('username', 'password','domain')
$webUrl = 'http://intranet.contoso.net/kb/'
$pageName = 'MyFirstWikiPage.aspx'
$pageContent = '<h1>Welcome to the Knowledge Base!</h1>'
CreateWikiPage $webUrl $credentials $pageName $pageContent
Referências
- Algumas dicas e truques de como usar o SharePoint Modelo de Objeto do Cliente em
PowerShell - Modificação do Layout de Página para Páginas de Wiki Corporativo (SharePoint 2010
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange