特定のフォルダー内のあらゆる種類のファイルを 7 日前に削除する PowerShell スクリプトを作成したいと考えていました。私が抱えている問題は、スクリプトの実行時に削除された、または以前に削除されたすべてのファイルの日付、時刻、および名前を含むログ ファイルを作成することです。
このページにある回答を変更する方法があるかどうか疑問に思っています: https://stackoverflow.com/questions/12326171/powershell-script-to-delete-sub-folders-and-files-if-creation-date -is-7-days-bu?lq=1
レポートを電子メールで送信する代わりに、スクリプトを保存しているフォルダーに削除されたすべてのファイルの名前、時刻、日付を含む 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"