현재 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) 당신이 파일을 삭제하려면 필요합니다? 3) 그것이 스크립트라면, $ dest는 어디서 오는가? 정의되어 있지 않으면 gci는 오류없이 현재 작업 디렉토리를 읽습니다. 4)'$ oldBackups'에 아무 것도 없다는 것을 확인 했습니까? 5) Remove-Item은 존재하지 않는 파일에 대한 예외를 던집니까? – TessellatingHeckler
$ dest가 외부 범위에서 위에 선언되었습니다. 스크립트의 작업 디렉토리입니다. 거기에 백업이 생성됩니다. 그리고 아니오, 아무 예외도 던지지 않는다. $ PSIsContainer에 관해서는 당신이 옳습니다. 우리는 백업이 폴더에 있지 않을 것이라고 결정했습니다, 그들은 Working Directory에 직접있을 것이므로, 기본적으로 백업은 mysqldump에 의해 출력되는 backup_cap_dateOfWrite 패턴 아래있을 것입니다. – darksleep