Below code is Tested and Working Fine
http://soreddymanjunath.blogspot.in/2014/01/add-existing-list-webpart-to-page-using.html
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
}
}