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

如何用PowerShell批量查找含指定字符串的.msg文件?

用PowerShell批量查找.msg文件正文指定内容

完全可以通过PowerShell实现无需手动逐个打开文件的批量查找,核心思路是借助Outlook的COM组件读取.msg文件的正文内容,再匹配目标字符串。

具体脚本示例

# 配置参数
$targetDir = "C:\Path\To\Your\MsgFiles"  # 替换为你的.msg文件目录
$searchString = "IT00513990010_10HK1"    # 替换为要查找的目标字符串

# 创建Outlook应用对象
$outlook = New-Object -ComObject Outlook.Application

# 遍历目录下所有.msg文件
Get-ChildItem -Path $targetDir -Filter "*.msg" -File | ForEach-Object {
    try {
        # 打开当前.msg文件
        $mailItem = $outlook.Session.OpenSharedItem($_.FullName)
        # 检查正文是否包含目标字符串
        if ($mailItem.Body -match $searchString) {
            Write-Host "找到匹配文件: $($_.Name)"
        }
        # 释放对象资源
        [System.Runtime.Interopservices.Marshal]::ReleaseComObject($mailItem) | Out-Null
    }
    catch {
        Write-Warning "处理文件 $($_.Name) 时出错: $_"
    }
}

# 释放Outlook对象资源
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null

注意事项

  • 运行脚本前需确保本地安装了Microsoft Outlook,因为依赖其COM组件解析.msg文件
  • 首次运行可能会触发Outlook的安全提示,需允许脚本访问邮件内容
  • 对于15000个文件的规模,脚本运行需要一定时间,可根据情况调整遍历策略(比如分批次处理)
  • 如果不需要区分大小写匹配,可将-match替换为-cmatch,或者在匹配前统一转换大小写

内容的提问来源于stack exchange,提问作者stefano.pin88

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:15:41