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

求助:PowerShell脚本无法同时筛选.bak和.dat两种SQL备份文件

解决PowerShell脚本无法同时筛选两种扩展名文件的问题

你的脚本问题出在Get-ChildItem的-Filter参数用法上——-Filter不支持同时指定多个扩展名的写法,你写的'*.bak''*.dat'会被PowerShell解析成单个字符串*.bak*.dat,根本匹配不到目标文件。

方案1:使用-Include参数(推荐,效率更高)

-Include参数支持指定多个通配符,结合-Recurse和-File可以直接在文件系统层面过滤目标文件,效率比后续再用Where-Object过滤更高。

核心代码修改如下:

# 提前计算24小时前的时间戳,避免重复调用Get-Date
$cutoffDate = (Get-Date).AddDays(-1)
# 使用-Include指定两种扩展名
$files = Get-ChildItem -Path E:\DB -Include '*.bak', '*.dat' -File -Recurse | 
         Where-Object { $_.CreationTime -gt $cutoffDate } |
         Select-Object -ExpandProperty FullName

方案2:使用Where-Object过滤扩展名(更灵活)

如果需要更复杂的过滤逻辑(比如忽略扩展名大小写),可以在获取所有文件后,用Where-Object直接判断扩展名:

$cutoffDate = (Get-Date).AddDays(-1)
$files = Get-ChildItem -Path E:\DB -File -Recurse | 
         Where-Object { 
             $_.CreationTime -gt $cutoffDate -and 
             $_.Extension.ToLower() -in '.bak', '.dat' # 忽略大小写匹配
         } |
         Select-Object -ExpandProperty FullName

完整修正后的脚本

以下是整合方案1的完整脚本,同时修正了注释错误,并优化了变量逻辑:

# 获取过去24小时内创建的.bak和.dat格式文件的完整路径数组
$cutoffDate = (Get-Date).AddDays(-1)
$files = Get-ChildItem -Path E:\DB -Include '*.bak', '*.dat' -File -Recurse | 
         Where-Object { $_.CreationTime -gt $cutoffDate } |
         Select-Object -ExpandProperty FullName

if ($files) {
    $message = "这些文件在过去24小时内被创建:{0}{1}" -f [Environment]::NewLine, ($files -join [Environment]::NewLine)
    $emailTo = 'xxx@xx.xx.xx'
}
else {
    $message = "过去24小时内没有创建符合条件的文件"
    $emailTo = 'xxx@xx.xx.xx'
}

# 屏幕输出结果
Write-Host $message

# 构建邮件参数哈希表
$mailParams = @{
    From       = 'xxx@xx.xx.xx'
    To         = $emailTo
    Subject    = '每日SQL备份报告'
    Body       = $message
    SmtpServer = 'x.x.x.x'
    # 可添加其他需要的参数,如-Port 587 -UseSsl等
}
# 发送邮件
Send-MailMessage @mailParams

额外提示

  • 原脚本注释写的是"last updates",但代码用的是CreationTime(文件创建时间),如果需要统计修改时间,请替换为LastWriteTime。
  • 如果你的环境中存在大写扩展名(比如.BAK),方案2中的ToLower()可以确保匹配到所有大小写形式的扩展名。

内容的提问来源于stack exchange,提问作者The IT Dept

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:09:54