我有一個目錄,它包含許多子目錄。例如:「\ IP \ Share \ Directory \ Machine \ Year \ Month \ Date \ Image_ID」無論內容如何,基於創建日期刪除目錄
問題是這個目錄存儲圖像,我需要刪除任何存儲的圖像超過730天。問題是「Image_ID」文件夾中有數百個圖像。有時您最多可以創建多達100個「Image_ID」文件夾。我需要製作一個PowerShell腳本,它將搜索目錄創建日期,進行排序,並將目錄壁櫥移至創建時間超過730天的「IP地址」(不是圖像/文件,因爲此過程可能需要一整天)。
這是一項日常任務,我需要儘量減少任務的持續時間。所以我想通過搜索目錄日期,而不是文件日期。
這是我正在使用的腳本,它適用於我。但其採取非常長的時間完成,它運行在相同的刪除線多次簡單地刪除子目錄的文件夾:
Param (
[string]$Source = "\IP\Share\Directory\Machine\Year\Month\Date\Image ID",
[string]$Days = "730"
)
$Folder = Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -le (get-date).adddays(-$($Days)) }
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
stop-process -Id $PID
}
如果我沒有解釋正確的東西,我會盡力和澄清。我是PowerShell的新手,這個腳本是我製作的多個腳本的組合。
我不確定我關注。你似乎多次重複相同的代碼塊! – gvee