sharepoint - 用于列出所有 sharepoint 2010/2007 页面及其布局的 Powershell 脚本

标签 sharepoint powershell sharepoint-2010 sharepoint-2007

我正在尝试编写一个 powershell 脚本,该脚本将在我的 sharepoint 2010/2007 页面上运行,并列出其页面布局并将结果保存到文本文件中。

在运行我写的以下脚本时,在几分钟后出现错误:

EnumeratePages:调用目标已引发异常。 在 T:\listpages.ps1:75 字符:15 + EnumeratePages <<<< ('http://preportal.idc.ac.il') + 类别信息:未指定:(:) [EnumeratePages],TargetInitationException +FullyQualifiedErrorId:System.Reflection.TargetInitationException,EnumeratePages

# 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

请指教。

最佳答案

这将用于发布页面:

filter Get-PublishingPages { 
    $pubweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($_)
    $query = new-object Microsoft.SharePoint.SPQuery 
    $query.ViewAttributes = "Scope='Recursive'"
    $pubweb.GetPublishingPages($query)    
} 

get-spweb $url | Get-PublishingPages | select Uri, Title, @{Name='PageLayout';Expression={$_.Layout.ServerRelativeUrl}}

关于sharepoint - 用于列出所有 sharepoint 2010/2007 页面及其布局的 Powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451276/

相关文章:

sharepoint - 使用 Sharepoint 2010 Client OM 指定要加载的项目字段

powershell - 标准输入到使用Invoke-Expression调用的命令

Azure 自动化 Runbook 无法完成且没有错误

sharepoint-2010 - 如何为 VHD 配置 VMware 工作站

javascript - SharePoint 2010 顶部导航?

powershell - 使用 "GetList"参数调用 "1"时出现异常

sharepoint - 加载此程序集将产生与其他实例不同的授权集。 (HRESULT : 0x80131401) 的异常

sharepoint - SharePoint 2010 中的工作流入门

javascript - 如何复制 SharePoint 2010 内部进行的社交 ajax 调用?

powershell - 如何从 Powershell/其他脚本设置 Bamboo 变量?