Я собираюсь написать сценарий PS, чтобы получить отчет в CSV всех файлов, измененных в течение прошлого месяца. Я пробовал два варианта, но сначала не писал отчет в файл и просто показывал результаты на экране, а второй просто ничего не делал. Буду признателен за любую оказанную помощь.Powershell report to csv все файлы, измененные в прошлом месяце
$dir_to_look="D:\TestFolder"
$month_backdate=$(Get-Date).AddDays(-1)
Get-Childitem $dir_to_look -Recurse | where-object {!($_.psiscontainer)} | where { $_.LastWriteTime -gt $month_backdate } | foreach { Write-Host "$($_.LastWriteTime) :: $($_.Fullname) " } | export-csv -path \\share\filename.csv
Вот второй один:
function Get-OldFiles {
param($date)
$folders = get-childitem “D:\TestFolder” -recurse | Where-Object {$_.psIsContainer -eq $true}
foreach ($folder in $folders) {
$oldfiles = Dir $folder.fullname *.* | where-object {$_.LastWriteTime -le $date}
if ($oldfiles.count) {
[float]$totalsize = ($oldfiles | Measure-Object -Sum length).Sum/1KB
$data = @{‘Folder’=$folder.fullname;’Count’=$oldfiles.count;’Size(Kb)’=$totalsize}
New-Object -Type PSObject -Prop $data
}
}
}
Get-OldFiles ’dd/mm/yyyy′ | Export-CSV \\sharename\file.csv -NoTypeInformation
Где дд/мм/гггг - это дата, которую я хочу указать для каждого отчета.
Dave, большое спасибо. Но, к сожалению, этот сценарий ничего не приносит в файл csv. Похож на бесконечный цикл, так как сценарий никогда не заканчивается. –
Сделал небольшое изменение в моем ответе, изменил Export-Csv на Set-Content. Я тестировал, и он отлично работает для меня. Он не может быть бесконечным циклом, он будет только обходить файлы в вашем TestFolder. Попробовали ли вы его с меньшим набором входных данных? –
Да, попробовал только папку, содержащую только несколько недавно измененных файлов. Похоже, он ничего не делает. Почему необходимо заменить export-csv на установочное содержимое, которое заменяет содержимое файлов? –