現在PowerShellが新しく、フォルダ内に見つかったLastWriteTimeが1未満のファイルの削除操作を実行するネット上の情報を収集したスクリプトを作成しました日。私は-WhatIf
コマンドを知っている限りでWindows PowerShell - X日以上経過したファイルを削除する
$timeLimit = (Get-Date).AddDays(-1)
$oldBackups = Get-ChildItem -Path $dest -Recurse -Force -Filter "backup_cap_*" |
Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $timeLimit}
foreach($backup in $oldBackups)
{
Remove-Item $dest\$backup -Recurse -Force -WhatIf
}
するコマンドは、現実のシナリオで行う「すべき」ものをコンソールに出力:
現在のスクリプトは次のようです。問題は-WhatIf
が何も出力せず、ファイルを削除してもファイルが期待通りに削除されないということです。
サーバーはWindows 2012 R2であり、コマンドはPowerShell ISE V3内で実行されています。
コマンドが機能すると、別のタスクのバックアップが完了した後、毎晩実行されるタスクに「変換」されます。
2が必要であることに注意してください)あなたがファイルを削除したい場合は、なぜあなたは唯一の '$ PSIsContainer'とフォルダを含めていますか? 3)それがあなたのスクリプトなら、$ destはどこから来ますか?定義されていない場合、gciはエラーなしで現在の作業ディレクトリを読み込みます。 4) '$ oldBackups'に何かがあることを確認しましたか? 5) 'Remove-Item'は存在しないファイルに関する例外をスローしますか? – TessellatingHeckler
$ destは外側のスコープ内で上で宣言されています。これはスクリプトの作業ディレクトリです。そこにバックアップが作成されます。そして、いいえ、例外は投げられません。 $ PSIsContainerに関して、あなたは正しいです。私たちは、バックアップがフォルダーにないと判断しました。それらは直接作業ディレクトリにあるので、基本的にバックアップはmysqldumpによって出力されるbackup_cap_dateOfWriteパターンの下にあります。 – darksleep