Powershell向csv报告上个月修改的所有文件

时间:2015-07-23 16:12:52

标签: csv powershell

我即将编写一个PS脚本来获取上个月内修改过的所有文件的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

dd / mm / yyyy在哪里 - 是我想为每份报告指定的日期。

1 个答案:

答案 0 :(得分:0)

你的第一个脚本的问题是Powershell返回循环中的最后一个语句,但你的最后一个语句是一个Write-Host,它只返回它只输出到你的控制台。修复如下:

$dir_to_look="D:\TestFolder"    
$month_backdate=$(Get-Date).AddDays(-1)    
Get-Childitem $dir_to_look -Recurse | ? {
  !($_.psiscontainer) -and  $_.LastWriteTime -gt $month_backdate
} | % { 
  Write-Host "$($_.LastWriteTime) :: $($_.Fullname) "  
  "$($_.LastWriteTime) :: $($_.Fullname) "
} | Set-Content -path \\share\filename.csv