2015-10-19 7 views
0

У меня есть сценарий PowerShell, который выводит все документы из всех библиотек в пределах сайта (веб) сферы в файл CSV, перечисленных ниже:Получить все элементы из всех списков с сайта - Powershell

function Get-DocInventory([string]$siteUrl) { 
$site = New-Object Microsoft.SharePoint.SPSite $siteUrl 
$web = Get-SPWeb "http://contoso.com/sites/Depts/HTG" 
foreach ($list in $web.Lists) { 
if ($list.BaseType -eq “DocumentLibrary”) { 

foreach ($item in $list.Items) { 
foreach($version in $item.Versions){ 
$data = @{ 
"Version" = $version.VersionLabel 
         "List Name" = $list.Title 
         "Created By" = $item["Author"] 
         "Created Date" = $item["Created"] 
         "Modified By" = $item["Editor"] 
         "Modified Date" = $item["Modified"] 
         "Item Name" = $item.File.Name 
         "URL"=$web.Site.MakeFullUrl("$($web.ServerRelativeUrl.TrimEnd('/'))/$($item.Url)"); 
} 
New-Object PSObject -Property $data | Select "List Name", "Item Name", "Version", "Created By", "Created Date", "Modified By", "Modified Date", "URL" 
} 
} 
$web.Dispose(); 
} 
$site.Dispose() 
} 
} 



Get-DocInventory | Export-Csv -NoTypeInformation -Path C:\NewOutput.csv 

У меня есть один последнее, что мне нужно сделать, и это, помимо вывода всех документов из всех библиотек, мне нужно добавить скрипт, чтобы вытащить все элементы из всех списков с одного и того же сайта http://contoso.com/sites/Deptss/HTG, как указано в приведенном выше скрипте. Может кто-нибудь, пожалуйста, скажите мне, как это сделать? Мне действительно нужна чья-то помощь в этом.

Примечание: Я знаю, что перебирать весь список я могу изменить строку ниже, первоначально итерацию библиотеки документов:

if ($list.BaseType -eq “DocumentLibrary”) 

Для этого один ниже перебирать списки:

if ($list.BaseType -eq “GenericList”) 

Я хочу перебирать библиотеки документов и списки. Как мне это сделать?

ответ

2

Как вы правильно определили, условие в этой строке кода вызывает сценарий только петли через библиотеки документов:

if ($list.BaseType -eq “DocumentLibrary”) 

Для перебора всех списков, независимо от типа, просто удалите этот пункт if (и его соответствующие открывающие/закрывающие скобы) полностью.