2014-09-03 93 views
2

我使用SharePoint 2013(Office 365中),和我使用CSOM部署各個位到Office在PowerShell中編寫腳本添加Web部件頁365.的SharePoint 2013 - 使用客戶端對象模型

我試圖使用PowerShell + CSOM將Web部件添加到頁面。

我有這個程序工作發佈網頁 - 工作正常。

我試圖將web部件添加到非發佈頁面,如列表中的'NewForm.aspx'。我知道我們無法簽出/簽入這些頁面,並且webparts是通過設計模式添加的 - 但是我無法讓我的腳本將簡單的Web部件添加到這些頁面(內容編輯器Web部件)。

我的代碼:

$wpxml = '<?xml version="1.0" encoding="utf-8"?> 
<WebPart xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/WebPart/v2"> 
    <Title>Form View JS</Title> 
    <FrameType>None</FrameType> 
    <Description>Allows authors to enter rich text content.</Description> 
    <IsIncluded>true</IsIncluded> 
    <ZoneID>Main</ZoneID> 
    <PartOrder>0</PartOrder> 
    <FrameState>Normal</FrameState> 
    <Height /> 
    <Width /> 
    <AllowRemove>true</AllowRemove> 
    <AllowZoneChange>true</AllowZoneChange> 
    <AllowMinimize>true</AllowMinimize> 
    <AllowConnect>true</AllowConnect> 
    <AllowEdit>true</AllowEdit> 
    <AllowHide>true</AllowHide> 
    <IsVisible>true</IsVisible> 
    <DetailLink /> 
    <HelpLink /> 
    <HelpMode>Modeless</HelpMode> 
    <Dir>Default</Dir> 
    <PartImageSmall /> 
    <MissingAssembly>Cannot import this Web Part.</MissingAssembly> 
    <PartImageLarge>/_layouts/15/images/mscontl.gif</PartImageLarge> 
    <IsIncludedFilter /> 
    <Assembly>Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
    <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName> 
    <ContentLink xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor">/sites/forms/Style Library/en-us/JS/mobileform.js</ContentLink> 
    <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" /> 
    <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" /> 
</WebPart>' 


$serverRelativeUrl = '/sites/forms/Lists/abc/NewForm.aspx' 
$file = $ctx.get_web().getFileByServerRelativeUrl($serverRelativeUrl) 
$ctx.Load($file) 
$ctx.ExecuteQuery() 

#$file.CheckOut() 
$ctx.ExecuteQuery() 
$limitedWebPartManager = $file.getLimitedWebPartManager("User") 
$wpd = $limitedWebPartManager.ImportWebPart($wpxml) 
$limitedWebPartManager.AddWebPart($wpd.WebPart, "Main", "0") 
#$file.CheckIn("Script web part added via PS", "MajorCheckIn") 
$ctx.ExecuteQuery() 

任何想法?

非常感謝。

+0

爲什麼它不起作用?你有什麼錯誤嗎? – Boland 2014-09-04 00:14:15

+0

沒有錯誤,只是不添加Web部分。當我定位到發佈頁面時,該過程完美地運行。 – dhendry 2014-09-04 07:30:07

回答

0

好吧,我得到它的工作使用下列內容:如果您想直接從XML變量添加打理這個行

$serverRelativeUrl = '/sites/forms/Lists/abc/NewForm.aspx' 

$WPManager = $web.GetFileByServerRelativeUrl($serverRelativeUrl).GetLimitedWebPartManager("Shared") 
$wpd = $WPManager.ImportWebPart($wpxml) 

$file = $web.GetFileByServerRelativeUrl($serverRelativeUrl).GetLimitedWebPartManager("Shared").AddWebPart($wpd.WebPart, "Main", "0") 
$ctx.Load($file) 
$ctx.ExecuteQuery() 
相關問題