在网络驱动器上的.msg文件中搜索关键字

时间:2018-10-12 15:37:59

标签: powershell

我需要在网络驱动器上的25000个单独的.msg文件中搜索关键字。我已经为Word,Excel,PDF创建了脚本,但是卡在Outlook邮件文件(.msg)中。我需要脚本来读取.msg文件,找到关键字,然后如果该关键字位于.msg文件中,则将该文件复制到另一个文件夹。我已经用Google搜索,但是没有找到我需要的帮助。

我尝试添加Get-ContentSelect-String -Pattern,但遇到无法识别的错误。

这与我所获得的差不多。

Get-ChildItem "y:\test" -Filter *.msg |
    ForEach-Object {
        $outlook = New-Object -ComObject Outlook.Application
        $msg = $outlook.CreateItemFromTemplate($_.FullName)
        $msg | Select body | ft -AutoSize
    }

这找到我的测试.msg文件。它显示身体,我可以看到关键字。现在我需要剩下的。

1 个答案:

答案 0 :(得分:2)

您快到了。 $msg只是一个长字符串,因此您可以使用简单的-like匹配项来查看它是否包含您的关键字:

Get-ChildItem "y:\test" -Filter *.msg |
ForEach-Object{
    $outlook = New-Object -comobject outlook.application
    $msg = $outlook.CreateItemFromTemplate($_.FullName)
    $msg | Select body|ft -AutoSize

    if($($msg | Select -ExpandProperty body) -like "*keyword*"){
        # logic to copy file
    }
}