我有一个脚本,可以将所有列表中的所有项目和以下所有库中的所有文件输出到CSV:
function Get-DocInventory([string]$siteUrl) {
#$site = New-Object Microsoft.SharePoint.SPSite $siteUrl
$web = Get-SPWeb "http://contoso.com/sites/Depts3/HBG"
foreach ($list in $web.Lists) {
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"] -as [datetime]).DateTime
"Modified By" = $item["Editor"]
"Modified Date" = ($item["Modified"] -as [datetime]).DateTime
"Item Name" = $item.Name
}
New-Object PSObject -Property $data | Select "List Name", "Item Name", "Version", "Created By", "Created Date", "Modified By", "Modified Date"
}
}
$web.Dispose();
}
#$site.Dispose()
}
Get-DocInventory | Export-Csv -NoTypeInformation -Path C:\GenerateReport.csv
上面显示的是一个共有3个版本的文件(Lions.pdf)。版本3是文件的当前版本,Modified By
和Modified Date
的数据显示为Doe,John。
当我转到版本历史时,我发现了一个问题:
该脚本似乎使用修改该文件的最新用户填充以前的版本,在本例中为Doe,Jane。此外,对于修改日期列,它显示从版本3到版本2和1的相同日期/时间。我可以对脚本执行哪些操作以显示列Modified By
和列{0}}的正确用户和日期/时间Modified Date
?
以下是脚本所需的输出: