すべてのリストとライブラリからすべてのアイテム/ファイルを CSV に出力するスクリプトがあります。さらに、アイテム/ファイルの現在および以前のバージョンが表示されます。これにより、各バージョンのファイルを変更したユーザーも表示され、各バージョンのファイルが変更された日付/時刻も表示されます。
function Get-DocInventory([string]$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" = $version["Editor"]
"Modified Date" = ($version["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();
}
}
Get-DocInventory | Export-Csv -NoTypeInformation -Path C:\GenerateReport.csv
以下は、スクリプトが出力するもののサンプルです。
以下は、Lions.pdf ファイルのバージョン履歴に移動したときに表示される Excel の例です。
私には2つの問題があります:
- [変更者] 列には、必須ではない電子メールとドメイン ユーザー名が表示されます。
- 私のスクリプトは、Modified Date 列を 5 時間先として表示します。バージョン 1 の Lions.pdf のスクリプト出力では、時刻が午前 11 時 23 分と表示されます。しかし、Lions.pdf のバージョン履歴を見ると、バージョン 1 は午前 6 時 23 分に変更されたと表示されます。時間の不一致は全面的に 5 時間先と同じですが、これは正しくありません。
ここで何が間違っているのか理解できないようです。誰かが私が抱えている問題を手伝ってもらえますか? 私の主な関心事は時間です。