从站点的所有列表中检索所有项目 - Powershell
Retrieve all Items from All Lists from a site - Powershell
我有一个 PowerShell 脚本,可将站点(网络)范围内所有库中的所有文档输出到下面列出的 CSV 文件中:
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”)
我想遍历文档库和列表。我该怎么做?
正如您正确识别的那样,这行代码中的条件导致您的脚本只循环遍历文档库:
if ($list.BaseType -eq “DocumentLibrary”)
要遍历所有列表而不考虑类型,只需完全删除 if
子句(及其相应的 opening/closing 大括号)。
我有一个 PowerShell 脚本,可将站点(网络)范围内所有库中的所有文档输出到下面列出的 CSV 文件中:
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”)
我想遍历文档库和列表。我该怎么做?
正如您正确识别的那样,这行代码中的条件导致您的脚本只循环遍历文档库:
if ($list.BaseType -eq “DocumentLibrary”)
要遍历所有列表而不考虑类型,只需完全删除 if
子句(及其相应的 opening/closing 大括号)。