SharePoint 2010 - Ajouter à un Web WebPart avec PowerShell
-
16-10-2019 - |
Question
Je veux ajouter un composant WebPart à un grand nombre de pages existantes. Y at-il commande PowerShell pour ajouter un composant WebPart à une page webpart?
La solution
Il n'y a pas de commande PowerShell, mais vous pouvez utiliser la méthode AddWebPart
du la classe de SPWebPartManager
pour ajouter le composant WebPart à un WebPartPage:
http://msdn.microsoft.com/EN-US/library /ms157507(v=VS.90 )
Vous pouvez obtenir un objet SPWebPartManager
en appelant WebPartManager.GetCurrentWebPartManager
et fournissant votre WebPartPage
:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.getcurrentwebpartmanager(v=VS.90).aspx
Autres conseils
Il n'y a rien comme ça OOB, mais vous avez à peu près les mêmes options que PowerShell en dire une application console en C #.
theres la possibilité de coder votre propre applet de commande qui fait cela pour vous.
Sur NBSP j'ai trouvé ce script qui devrait vous aller.
Voici quelques exemples de scripts PowerShell pour ajouter webparts aux sites:
Un joli, simple, propre code pour ajouter un CEWP:
Celui-ci ajoute une partie Web personnalisée:
Et cela ajoute une webpart en page viewer - M. Hahner a fait cette blogpost surtout pour moi! http://spcrew.com/blogs/lists/posts/post.aspx ? id = 21
Voici un script simple d'ajouter un webpart à une page en utilisant PowerShell qui est testé et fin de travail.
S'il vous plaît noter que pour ajouter un composant WebPart à une webpart d'exportation page .webpart / .dwp votre disque local fichier sera au format 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"
}