powershell - 默认情况下,X天后删除旧文件,但某些目录例外[Powershell]

我正在尝试解决以下情况:

我有包含多个子目录和文件的目录,我需要在其中设置诸如保留策略之类的内容,默认情况下,我将文件设置为不超过365天,其中有一些特殊目录我想保留不同的时间除了我的默认值。 这些目录在txt文件中使用以下语法指定

驱动器的内容:\\ Path \\ to \\ special_dirs.txt

D:\Path\to\vendor1 -396
D:\Path\to\vendor2 -45

到目前为止,这就是我提出的内容(它仅在特殊目录上起作用,下一部分我想继续进行的下一部分将不起作用):

# Script to remove old files from Archive: D:\Path\to
# Declaring variables to be used
$controlfile = "Drive:\Path\to\list\special_dirs.txt"
$dir = "D:\Path\to"
$default_days = "-365"
$excluded_dirs = Get-Content $controlfile | Foreach-Object {$_.Split()[0]}

foreach ($line in Get-Content $controlfile) {
    $split = $line.split(" ")
    $file_path = $split[0]
    $max_days = $split[1]

    Get-ChildItem $file_path -Include *.* -File -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays($max_days))} | Remove-Item -Force -Recurse -Verbose -WhatIf
}

# Removing everything else older than 365 days old
Get-ChildItem -Path $dir -Include *.* -File -Recurse -Directory -Exclude $excluded_dirs | Where-Object {($_.LastWriteTime -lt $curr_date.AddDays($default_days))} | Remove-Item -Force -Recurse -Verbose -WhatIf

即使目录为空,我也不想删除目录,我只想删除文件,脚本的最后一部分只是删除所有早于365天的目录,其中我想保留的目录比目录多30天。默认时间段内,有关如何完成此操作的任何想法? 我使用了文件列表,以便可以继续向供应商添加目录,在这些供应商中,可以保留的时间可以长于甚至少于默认天数。

那这样的东西呢?

$30DayDirs = @('C:\Temp\Test1\','C:\Temp\Test2\')
$60DayDirs = @('C:\Temp\Test3\')
$365DayDirs = @('C:\Temp\Test4\')

foreach($file in $30DayDirs){
    $file = Get-ChildItem $30DayDirs -Recurse |where LastWriteTime -LT (Get-Date).AddDays(-30)
    Remove-Item $file.FullName -Force -Recurse
}

foreach($file in $60DayDirs){
    $file = Get-ChildItem $60DayDirs -Recurse |where LastWriteTime -LT (Get-Date).AddDays(-60)
    Remove-Item $file.FullName -Force -Recurse
}

foreach($file in $365DayDirs){
    $file = Get-ChildItem $365DayDirs -Recurse |where LastWriteTime -LT (Get-Date).AddDays(-365)
    Remove-Item $file.FullName -Force -Recurse
}

转载请注明来自askonline.tech,本文标题:powershell - 默认情况下,X天后删除旧文件,但某些目录例外[Powershell]


 Top