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

PowerShell如何在文件夹中查找今日最新创建的mdb备份文件

问题诊断

原脚本存在3个核心问题导致无法正确获取目标文件:

  • Sort-Object语法错误:传递属性名时不需要加$_前缀,原写法$_.CreationTime会导致排序逻辑完全失效
  • 排序逻辑错误:默认采用升序排序,搭配Select-Object -First 1获取到的是最早创建的文件,而非最新文件
  • 缺少时间过滤规则:没有限定仅查询今日创建的备份文件
修改后的完整脚本
$Destination = "\\DC-Server1\Backups$\Folder1"

do{
    $Server = Test-Connection 'RegionalServer1' -Count 1 -Delay 30 -Quiet    
    if($Server)
    {
        # 获取今日创建的最新mdb备份文件
        Get-ChildItem -Path E:\Backups -Filter "*.mdb" -File | 
            Where-Object { $_.CreationTime.Date -eq (Get-Date).Date } |
            Sort-Object -Property CreationTime -Descending | 
            Select-Object -First 1 | 
            Copy-Item -Destination $Destination -Force
    }

}until($Server)
优化说明
  • 用内置-File参数替代Where-Object { -not $_.PSIsContainer },过滤文件夹的逻辑更简洁高效
  • 新增-Filter "*.mdb"参数,仅扫描mdb格式的备份文件,排除目录下其他无关文件
  • 新增日期过滤规则$_.CreationTime.Date -eq (Get-Date).Date,仅保留当日创建的文件
  • 修正排序语法,新增-Descending参数按创建时间倒序排列,取第一个就是当日最新的备份文件
备选方案(适配文件属性时间不准的场景)

从你提供的文件列表可以看到,部分文件的属性时间和文件名标注的备份日期不一致,如果遇到创建时间属性不准的情况,可以直接匹配文件名中的日期字段,可靠性更高:

$Destination = "\\DC-Server1\Backups$\Folder1"
# 生成和备份文件名格式一致的当日日期字符串(日-月-年)
$todayDateStr = Get-Date -Format "dd-MM-yyyy"

do{
    $Server = Test-Connection 'RegionalServer1' -Count 1 -Delay 30 -Quiet    
    if($Server)
    {
        Get-ChildItem -Path E:\Backups -Filter "*.mdb" -File | 
            Where-Object { $_.Name -match $todayDateStr } |
            Sort-Object -Property CreationTime -Descending | 
            Select-Object -First 1 | 
            Copy-Item -Destination $Destination -Force
    }

}until($Server)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:21:02