【发布时间】:2013-05-04 05:15:12
【问题描述】:
我想制作一个 PowerShell 脚本,在某个文件夹中删除 7 天前的任何类型的文件。我遇到的问题是创建一个日志文件,其中包含在脚本运行时已删除或之前删除的所有文件的日期、时间和名称。
我想知道是否有办法修改此页面上找到的答案:https://stackoverflow.com/questions/12326171/powershell-script-to-delete-sub-folders-and-files-if-creation-date-is-7-days-bu?lq=1
我希望它不会发送包含报告的电子邮件,而是会创建一个日志文件,其中包含我存储脚本的文件夹中的名称、时间和日期已删除的所有文件(请注意,我我希望它每次都附加日志文件而不是覆盖它)。很抱歉,因为我不知道如何编码,所以很长一段时间以来我一直在尝试自己做这件事,我一直在问问题等等,但似乎仍然无法让它发挥作用。所以是的,如果有人可以修改该脚本,将不胜感激!谢谢!
这是我对脚本所做的(如果有帮助的话),但它不起作用(我再次不知道如何编码):
$report_items = @()
# set folder path
$dump_path = "C:FileDeleter\AutoDeleteFilesInThisFolder"
# set min age of files
$max_days = "-7"
# get the current date
$curr_date = Get-Date
# determine how far back we go based on current date
$del_date = $curr_date.AddDays($max_days)
# get the sub directories
$sub_dirs = Get-ChildItem $dump_path | Where-Object {!$_.PSIsContainer }
$sub_dirs | % {
if (Get-ChildItem $_.FullName -Recurse | Where-Object { $_.LastWriteTime -gt $del_date } ) {
$report_items += New-Object -Type PSObject -Property @{
Time = Get-Date -f "hh:mm:ss"
Message = "Skipping " + $_.FullName + " because it contains items newer than " + $del_date
}
}
else {
Remove-Item $_.FullName -Recurse
$report_items += New-Object -Type PSObject -Property @{
Time = Get-Date -f "hh:mm:ss"
Message = "Deleting " + $_.FullName + " because it contains no items newer than " + $del_date
}
}
}
$report_items | out-file "C:\FileDeleter\PruningReport.txt"
【问题讨论】:
-
您应该告诉我们您所看到的行为以及与您的预期有何不同。我看不到
$report_items是如何设置的,我还注意到您的out-file调用每次都会覆盖文件-您可能想尝试-Append -
您的标题中不必添加
[UNSOLVED]或[SOLVED]。如果它已经解决,您应该已经接受了提供解决方案的答案,而您没有这样做的事实表明它尚未解决。请不要用不需要的额外噪音来混淆您的问题标题。谢谢。
标签: powershell