【发布时间】:2011-05-20 04:50:54
【问题描述】:
我创建了一个自定义 webpart 并添加到 webpart 库中。我需要在我的页面中添加该 webpart 控件。 请帮助我如何在 powershell 脚本中实现这一点。
【问题讨论】:
标签: sharepoint scripting powershell
我创建了一个自定义 webpart 并添加到 webpart 库中。我需要在我的页面中添加该 webpart 控件。 请帮助我如何在 powershell 脚本中实现这一点。
【问题讨论】:
标签: sharepoint scripting powershell
使用GetLimitedWebPartsManager() 获取对页面管理器的引用,然后调用其AddWebPart() 方法:
$mgr = $web.GetLimitedWebPartManager($yourPageUrl,
[System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
$mgr.AddWebPart($yourWebPart, "YourZone", 0);
【讨论】:
$yourWebPart?
$webpart=new-object Microsoft.SharePoint.Portal.WebControls.ContactFieldControl。
Microsoft.Sharepoint.* 实际上并没有内置在 Microsoft 系统中(它是一个附加组件)。以这种方式引用 Web 部件类是否有问题?
请注意,将 webpart 添加到页面导出 webpart 到您的本地驱动器和 .webpart/.dwp 文件将采用 xml 格式
cls
asnp "*sh*"
$web=Get-SPweb -Identity "http://SP2013dev.com/sites/addwebpart/"
[xml]$webpartxml= Get-Content -Path "C:\Manju\WPRequest.xml"
$SR = New-Object System.IO.StringReader($webpartxml.OuterXml)
$XTR = New-Object System.Xml.XmlTextReader($SR)
$err=$null
$WebPartZoneID = "Topzone"
$WebPartZoneIndex = 0
try
{
$page=$web.GetFile("Pages/default.aspx");
$bool=$page.CheckedOutBy
if($bool)
{
Write-Host "Page is already Checkout to " $page.CheckedOutBy.UserLogin
$page.UndoCheckOut()
Write-Host "Page is Over ridded by " $web.CurrentUser.DisplayName + " to Add Webpart"
}
$page.CheckOut();
$wmgr=$web.GetLimitedWebPartManager($page, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared);
$webpart=$wmgr.ImportWebPart($XTR,[ref]$err);
$wmgr.AddWebPart($webpart,$WebPartZoneID,$WebPartZoneIndex);
$page.CheckIn('dude');
$page.Publish('Adding request Site Webpart')
"Request Site WebPart SucessfullAdded" + (Get-Date -DisplayHint Date) | Out-File -Append "C:\OutPutLog.txt"
$SR.Close();
$XTR.Close();
$web.Dispose()
}
catch
{
$ErrorMessage = $_.Exception.Message
"Request Site WebPart Failure" + $ErrorMessage + (Get-Date -DisplayHint Date) | Out-File -Append "C:\ErrorLog.txt"
}
【讨论】:
这取决于我们的要求,但我们可以使用 JavaScript 或其他客户端对象模型库将 Web 部件添加到 SharePoint 页面。我的建议是,即使您的要求指导您编写 PowerShell 脚本,也尽量使用客户端对象模型而不是服务器对象模型。
如果你想直接从 XML 变量中添加,请注意这一行:
导入 Web 部件$wp = $webpartManager.ImportWebPart($WebPartXml.OuterXml)
您可以在此处查看更多信息:http://josharepoint.com/2016/02/16/using-powershell-to-add-webpart-to-sharepoint-page-via-csom-in-office-365/
【讨论】: