PowerShellとSpsitedataQueryを使用してすべてのページライブラリをリストしますか?
-
10-12-2019 - |
質問
私のスクリプティングでは、特定の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つ: