Я пытаюсь написать скрипт powershell, который будет работать на всех страницах sharepoint 2010/2007, перечислять их макет страницы и сохранять результаты в текстовый файл.
при запуске следующего скрипта, который я создаю, после нескольких минут появляется ошибка:
EnumeratePages: Исключение было сгенерировано целью вызова.
В T: \ listpages.ps1: 75 char: 15
+ EnumeratePages <<<< ('http://preportal.idc.ac.il')
+ CategoryInfo: NotSpecified: (:) [EnumeratePages], TargetInvocationException
+ FullyQualifiedErrorId: System.Reflection.TargetInvocationException, EnumeratePages </p>
# Add SharePoint cmdlets reference
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
function EnumeratePages($Url) {
$site = new-object Microsoft.SharePoint.SPSite $Url
foreach($web in $site.AllWebs) {
if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($web)) {
$pWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)
$pages = $pWeb.PagesList
Write-Host "Processing Web:" $pWeb.Url "..." -ForegroundColor Magenta
foreach ($item in $pages.Items) {
$fileUrl = $pWeb.Url + $webUrl + "/" + $item.File.Url
Write-Host " " $fileUrl -ForegroundColor Green
foreach ($fld in $item.Fields)
{
if($fld.Title -and $fld.InternalName -and $item[$fld.InternalName])
{
if($fld.InternalName -eq "PublishingPagelayout")
{
Write-Host "PublishingPagelayout: " + $item[$fld.InternalName].ToString()
Select "Page Url: ", $fileUrl, "PublishingPagelayout: ", $item[$fld.InternalName].ToString() | Format-List
}
}
#$spFile = $web.GetFile($fileUrl.ToString())
#if($spFile.Properties.Count -gt 0)
#{
#}
}
}
}
else {
Write-Host " Not a publishing web:" $web.Url". Looking for Site Pages library." -ForegroundColor Magenta
$pages = $null
$pages = $web.Lists["Site Pages"]
if ($pages) {
Write-Host " " $pages.Title "found." -ForegroundColor Green
foreach ($item in $pages.Items) {
$fileUrl = $pWeb.Url + $webUrl + "/" + $item.File.Url
Write-Host " " $fileUrl -ForegroundColor Green
foreach ($fld in $item.Fields)
{
if($fld.Title -and $fld.InternalName -and $item[$fld.InternalName])
{
if($fld.InternalName -eq "PublishingPagelayout")
{
Write-Host "PublishingPagelayout: " + $item[$fld.InternalName].ToString()
Select "Page Url: ", $fileUrl, "PublishingPagelayout: ", $item[$fld.InternalName].ToString() | Format-List
}
}
}
#$spFile = $web.GetFile($fileUrl)
#if($spFile.Properties.Count -gt 0)
#{
#}
}
else {
Write-Host " Site Pages library not found." -ForegroundColor Red
}
}
Write-Host "... completed processing" $web "..." -ForegroundColor Magenta
}
}
}
$row = EnumeratePages('http://server-name')
$row > t:\SitePagesPropertiesReport2.txt
Пожалуйста, сообщите.