Frage

salvete!Ist es möglich, ein WebPart zu einer Wiki-Startseite über PowerShell hinzuzufügen?Ich habe 100 Websites, für die ich ihren Home-Seiten ein Web-Teil hinzufügen muss.Ich weiß, dass dies mit normalen Web-Part-Seiten problemlos möglich ist, aber wie wäre es mit einer Wiki-Home-Seite?

War es hilfreich?

Lösung

Yes, it's possible. I had a blog post on this very topic, but the blog site has since been deactivated. Basically you do it like you would add a web part to any other Web Part Page. When it's time to specify the zone, use the "wpz" zone. Also, you need to add some markup to the Page's "WikiField" that resembles this (substituting your Web Part ID Guid where appropriate):

<div class="ms-rtestate-read ms-rte-wpbox">
  <div class="ms-rtestate-read {webpart ID guid}"
       id="div_{webpart ID guid}">
  </div>
  <div class="ms-rtestate-read"
       id="vid_{webpart ID guid}"
       style="display: none">
  </div>
</div>

This posting was similar to the content I presented in my (now deleted) posting: http://blog.mastykarz.nl/inconvenient-provisioning-web-parts-wiki-pages-sandboxed-solutions/

Andere Tipps

Below Code Reads the SiteUrls from Text file called SiteUrls.txt, and add library called "Oct Invoicing 2014" to the Wikipage called "Billing_Req.aspx"

Here we are taking variable i to check for the library already present on the page, if present we are incrementing i to 1 and else its default value =0

If i=0 means webpart is not present on the page and it will be added on the page.

in All the cases we are writing the output to D:\Webpartoutput.txt.

cls 

asnp "*sh*"

$file=Get-Content -Path D:\SiteUrls.txt

foreach($url in $file)
 {

$web= Get-SPWeb -Identity $url

$listName = "Oct Invoicing 2014"

$pageUrl= $web.GetFile("SitePages/Billing_Req.aspx");

if($pageUrl.Exists)
{

    try
     {

    $i=0; 

    $webpart = New-Object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart

    $list=$web.Lists.TryGetList($listName)

    $webpart.ListId = $list.ID

    $webpart.ViewGuid = ($list.DefaultView.ID).ToString("B").ToUpper()  

    $webpartmanager=  $web.GetLimitedWebPartManager($pageUrl,[System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

    foreach($wpt in $webpartmanager.WebParts)
    {

         if($wpt.ListId -eq $list.ID)
         {
         $i=$i+1;
         break;

         }
    }

    if($i -eq "0")
    {

        $webpartmanager.AddWebPart($webpart,"",0)

       "Webpart Added Successfully" + $url + " " + $webpart.Title |  Out-File   -Append -FilePath D:\WebpartOuPut.txt
     }
     else
      {
         " Dude Webpart is already present on the site  : " + $url |  Out-File -Append -FilePath D:\WebpartOuPut.txt 
      }
  }

  catch [Exception]
      {

   $url + $_.Exception.Message | Out-File -Append -FilePath D:\WebpartOuPut.txt 
     }
    }
          else
    {
    "Page Url is invalid or not existing  : " + $url  | Out-File -Append -FilePath D:\WebpartOuPut.txt 
    }
 }

More details in my blog

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top