You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

完善PowerShell脚本:导出24小时无新备份的文件夹至CSV

我已经帮你完善了PowerShell脚本,实现了递归遍历备份文件夹、找出每个子文件夹的最新备份文件、筛选出创建时间早于24小时的文件,并将符合条件的信息导出到指定的CSV文件。下面是完整的可运行脚本和关键修改说明:

完整修改后的脚本
[Cmdletbinding()]
param(
    [Parameter(Position=0,Mandatory=$false,ValueFromPipeline=$true)]
    $path = "F:\backups",
    [Parameter(Position=1,Mandatory=$false,ValueFromPipeline=$true)]
    $OutPutFilepath = "f:\backup-daily.csv"
)

function Get-LastestWroteFile{
    [Cmdletbinding()]
    param(
        [Parameter(Position=0,Mandatory=$true)]
        $Folder
    )
    begin{
        # 获取当前文件夹下的所有文件,按创建时间排序取最新的一个
        $Latest = Get-ChildItem $Folder.FullName -File | 
            Select-Object FullName, CreationTime, LastAccessTime, LastWriteTime, Attributes, 
                @{N='SizeInMb';E= {$_.Length/1mb}}, Name | 
            Sort-Object CreationTime | 
            Select-Object -Last 1
    }
    process{ }
    end{
        if($Latest){
            # 判断最新文件的创建时间是否早于24小时前
            $24HoursAgo = (Get-Date).AddHours(-24)
            if($Latest.CreationTime -lt $24HoursAgo){
                # 返回符合条件的自定义对象
                return New-Object PSobject -Property @{
                    "FileName" = $latest.Name
                    "FileFullPath" = $latest.FullName
                    "CreationTime" = $latest.CreationTime
                    "LastWriteTime" = $latest.LastWriteTime
                    "FolderPath" = $folder.FullName
                    "SizeInMB" = [math]::Round($Latest.SizeInMB,3)
                }
            }
        }
    }
}

$OutPut = @()
# 递归遍历所有子文件夹
Get-ChildItem -Directory -Path $path -Recurse | ForEach-Object {
    $result = Get-LastestWroteFile $_
    if($result){
        $OutPut += $result
    }
}

# 导出到CSV,使用|作为分隔符,指定UTF8编码避免乱码
$OutPut | ConvertTo-Csv -NoTypeInformation -Delimiter '|' | Out-File -FilePath $OutPutFilepath -Encoding UTF8
关键修改点说明
  • 修复语法错误:移除了原脚本末尾多余的闭合花括号},确保脚本能正常运行
  • 添加时间判断逻辑:在函数中计算24小时前的时间戳,只有当最新备份文件的创建时间早于该时间时,才会被纳入结果集
  • 优化输出字段:调整字段名称(如FileName、FileFullPath),让CSV内容的可读性更强
  • 编码优化:导出CSV时指定-Encoding UTF8,避免中文文件名或路径出现乱码问题
  • 结果过滤:遍历文件夹时只保留符合条件的结果,减少无效数据的存储

内容的提问来源于stack exchange,提问作者Ghasem Shams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:47:37