我即将编写一个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在哪里 - 是我想为每份报告指定的日期。
答案 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