将msg文件的内容导入字符串

时间:2017-04-25 18:37:04

标签: powershell

我正在使用Powershell来解析保存到本地文件夹的电子邮件内容。

代码如下......

Get-ChildItem "C:\projtest\emails" -Filter *.msg |
ForEach-Object {
    $msg = ""
    $outlook = New-Object -comobject outlook.application
    $msg = $outlook.Session.OpenSharedItem($_.FullName)
    $msg | Select -ExpandProperty body 

    Write-Host $msg
}

$outlook.Quit()

现在,我只想打开文件,获取内容并显示它。

我遇到的问题是,一旦脚本运行,OUTLOOK.EXE就不会关闭,所以我无法在同一条消息上再次运行脚本。

是否有更好的方法可以打开Outlook电子邮件,将内容放入PowerShell中的字符串中,然后关闭Outlook进程?

1 个答案:

答案 0 :(得分:4)

不要打开和关闭Outlook,打开一次,完成所有工作,然后在事情结束时将其关闭。

$outlook = New-Object -comobject outlook.application
Get-ChildItem "C:\projtest\emails" -Filter *.msg |
    ForEach-Object {
        $msg = $outlook.Session.OpenSharedItem($_.FullName)
        $msg.body 
    }
$outlook.Quit()

编辑:好的,您需要关闭.msg文件,而不是Outlook。只需将其添加到ForEach循环:

$outlook = New-Object -comobject outlook.application
Get-ChildItem "C:\projtest\emails" -Filter *.msg |
    ForEach-Object {
        $msg = $outlook.Session.OpenSharedItem($_.FullName)
        $msg.body 
        $msg.Close()
    }
$outlook.Quit()