SharePoint 2010 - Fügen Sie Webpart in ein Web mit PowerShell hinzu
-
16-10-2019 - |
Frage
Ich möchte einer großen Anzahl vorhandener Seiten ein Webpart hinzufügen. Gibt es einen PowerShell -Befehl, um einer Webpart -Seite ein Webpart hinzuzufügen?
Lösung
Es gibt keinen PowerShell -Befehl, aber Sie können die verwenden AddWebPart
Methode der SPWebPartManager
Klasse zum Hinzufügen des Webparts zu einem WebPartPage:http://msdn.microsoft.com/en-us/library/ms157507(v=vs.90)
Sie können eine bekommen SPWebPartManager
Objekt durch Anruf WebPartManager.GetCurrentWebPartManager
und es Ihnen bereitzustellen WebPartPage
:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webPartManager.getCurrentwebPartManager(v=vs.90).aspx
Andere Tipps
Es gibt nichts wie dieser OOB, aber Sie haben in Powershell so ziemlich die gleichen Optionen wie in einer Konsolenanwendung in C#.
Daher ist es die Möglichkeit, Ihr eigenes CMDLET zu codieren, das dies für Sie tut.
Auf NBSP fand ich Dies Skript, das Sie zum Laufen bringen sollte.
Hier sind einige Beispiele für PowerShell -Skripte zum Hinzufügen von Websites zu Websites:
Ein schöner, einfacher, sauberer Code zum Hinzufügen eines CEWP:
Dieser fügt einen angepassten Webpartner hinzu:
http://www.sharemuch.com/2010/11/17/using-powershell-to-add-and-configure-sharepoint-2010-webparts/
Und dies fügt ein Webpart -Viewer hinzu - Herr Hahner hat diesen Blogpost besonders für mich gemacht!http://spcrew.com/blogs/lists/posts/post.aspx?id=21
Hier ist ein einfaches Skript, um eine Webpart zu einer Seite mit PowerShell hinzuzufügen Welches wird getestet und gut funktioniert.
Bitte beachten Sie, dass zum Hinzufügen eines Webparts zu einem Seite exportieren, um Ihr lokales Laufwerk zu einem lokalen Laufwerk zu exportieren.
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"
}