Перечислите все страницы библиотеки с использованием PowerShell и SpSitedataQuery?
-
10-12-2019 - |
Вопрос
Я использую Foreach в своих сценариях, чтобы убедиться, что я получаю все в Интернете на каждом сайте в определенном WebApp, в этом случае в этом случае список (и в конечном итоге обновлять) все библиотеки страниц в SiteCollection. Я был соотечен взглянуть на SP кППЦАТВ, что не так долго и использует гораздо меньше ресурсов, чем мой метод. Единственная проблема в том, что я не могу по-видимому, чтобы поработать, даже если я следую в блогах:
- .
- Использование PowerShell Чтобы быстро отладить SPSTALATAMERY < / a>
- Использование SP ктсплата с PowerShell
-
PowerShell Script Для получения страниц коллекции сайта и подсчета элементов списка с использованием объекта SPSTITALATAQUERY . Я получаю без результата , слишком много строк , исключение вызывает getitedata с 1 аргументом и тому подобное, но ничего не полезно. Поэтому мне интересно, можно ли перечислить все библиотеки страниц во всех веб-сайтах на всех сайтах в определенных веб-парне, используя SP кеттата?
Это мой текущий ресурсный тяжелый скрипт (который на самом деле работает):
.# 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 перечисляет страницы во всех библиотеках страниц, представленных в данной коллекции сайта.Изменение этого можно использовать для перечисления всех библиотек страниц в данном веб-приложении.Главное, чтобы заметить здесь, что 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-tot-сайт [dot] html
(я не могу опубликовать более 2 ссылок= /. Но первое выше, кажется, более интересным)
http://wethinkwebecome.blogspot.fr/2011/11/PowerShell-SpsitedataQuery-Debug.html
И, конечно же, Microsoft One:
http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.spsitedataquery%28v=Office.12%29.aspx
Я прошу прощения, если это бесполезно= /