作为我之前的问题的更新,我将发布我到目前为止的脚本,前两个任务我已经设法完美地编写脚本,留给我30天以下的备份,当更旧时,只在星期日创建备份。但是,我无法完成第3项任务。谁能请我提供一些关于如何完成第3项任务的指针?任何帮助将不胜感激。
这是我的代码sofar:
Function FirstCheck{
$Today = GET-Date
#Check for *.BAK files to see if older than 30 days.
$BackupsOlderThan30 = GET-CHILDITEM C:\Temp\OnTracBak\ –filter *.BAK | WHERE { (($Today - $_.LastWriteTime).Days –gt 30 ) }
#Check for files older than 30 days and that are not Sunday
$NotWeeklyBackups=$BackupsOlderThan30 | where { ($_.LastWriteTime ).DayOfWeek –ne ’Sunday’ }
$NotWeeklyBackups | REMOVE-ITEM
$NotWeeklyBackups.Count
}
我可能对你有一个问题/一点挑战。 我会尽可能清楚地解释它。
情况: 我们公司为客户使用SLA。
此SLA中的一项是备用条款...... 在这里我们定义了几条规则:
现在,备份是每天进行的。 因此,我们的备份文件夹目前的大小约为4TB。 (通向大路。)
当然,我们可以手动跟踪和删除或保存我们的备份文件,但当然,我想使用Powershell脚本自动执行此操作。
脚本应该执行以下操作: 检查.bak和.trn文件的文件夹和子文件夹。 获取这些文件的日期并应用以下规则:
目前我不知道如何或在何处开始编写脚本或显然如何执行这些扩展搜索......: - (
答案 0 :(得分:1)
使用Get-ChildItem
cmdlet列出文件。每个文件都有LastWriteTime
属性,您可以通过过滤集合。过滤的业务规则留给读者练习。简单的过滤示例是这样的,
$files = @(gci path-to-files) # Force gci to return an array
$cutPoint = (get-date).addDays(-30) # Get date 30 days ago
$filesToPrune = $files | ? { $_.LastWriteTime -lt $cutPoint } # Files for archive process