PowerShellとSpsitedataQueryを使用してすべてのページライブラリをリストしますか?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/71361

質問

私のスクリプティングでは、特定のWebアプリケーションのすべてのサイトにすべてのWebを、SiteCollectionのすべてのページライブラリをリスト(そして最終的に更新)するすべてのWebを取得します。私はSPSITEDATAQUERYを見てください。これは長い間にはかかりません。唯一の問題は、ブログをフォローしても機能するように思われることができないことです:

  • PowerShellを使用してSPSitedataQuery < / a>
  • PowerShell
  • PowerShellスクリプトSpsitedataQqueryオブジェクト を使用してサイトコレクションページとリスト項目数を取得するためのスクリプト

    結果 例外の1つの引数などのGetSitedataは、実際には何も役に立ちません。それで、SPSitedataQqueryを使用して、特定のWebAppsのすべてのサイトのすべてのWebのすべてのページライブラリをリストすることが可能になりますか?

    これは私の現在のリソースの重スクリプトです(実際には機能します):

    # Add PS Snapin if not loaded
    $snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'} 
    if ($snapin -eq $null) 
    {    
        Write-Host "Loading SharePoint Powershell Snapin"    
        Add-PSSnapin "Microsoft.SharePoint.Powershell"  -EA SilentlyContinue
    }
    
    #Iterate all webs and print List URL
    $SPWebApp = Get-SPWebApplication "http://mywebapp/"
    
    foreach ($SPSite in $SPWebApp.Sites)
    {
        if ($SPSite -ne $null)
        {
            foreach ($SPWeb in $SPSite.AllWebs)
            {
                foreach ($list in $SPWeb.Lists)
                {
                    if ($list.Title.Contains("Pages"))
                    {
                        $ListURL = $SPWeb.url + "/" + $list.RootFolder.Url
                        Write-Host $ListURL
                    }
    
                    if ($SPWeb -ne $null)
                    {
                        $SPWeb.Dispose()
                    }
                }
            }
        }
    
        if ($SPSite -ne $null)
        {
            $SPSite.Dispose()
        }
    }
    
    .

役に立ちましたか?

解決

次のPowerShellコードには、特定のサイトコレクションに存在するすべてのページライブラリのページが一覧表示されます。これをバリエーションすると、特定のWebアプリケーションのすべてのページライブラリをリストするために使用できます。ここに気付くための主なことは、ServerTemplate のページライブラリの850です。

$siteCollectionUrl = "http://sp2010"
$site =new-object Microsoft.SharePoint.SPSite($siteCollectionUrl)
$query = new-object Microsoft.SharePoint.SPSiteDataQuery
$query.Webs = "<Webs Scope='SiteCollection'>"
$query.Lists = "<Lists ServerTemplate='850' />"
$results = $site.rootweb.GetSiteData($query)
foreach($row in $results.rows)
{
  $listId = $row["ListId"]
  $webId = $row["WebId"]
  $childWeb = $site.OpenWeb([GUID]($webId))
  $pagesList = $childWeb.Lists[[GUID]($listId)];
  $itemUrl = $childWeb.Url + "/" + $pagesList.RootFolder.Url
  Write-Host $itemUrl 
  $childWeb.Dispose()
}
$site.Dispose()
.

他のヒント

私はまったくSharePoint Proではありません。しかし、それがあなたを助けることができるならば、私はあなたにこれを与えます、それはクールです:)

http [dot] // www [dot] SharePointFix [DOT] COM / 2012/06 / PowerShell-script-to-get-site [dot] HTML

(2つ以上のリンクを投稿できません= /。しかし、上記の最初のものはより面白いようです)

http://wethinkwebecome.blogspot.fr/2011/11/PowerShell-spsitedataquery-debug.html

ともちろんマイクロソフトの1つ:

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top