获取 msg 文件的内容到字符串中

Bra*_*don 4 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()
Run Code Online (Sandbox Code Playgroud)

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

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

有没有更好的方法来打开 Outlook 电子邮件,在 PowerShell 中将内容转换为字符串,然后关闭 Outlook 进程?

The*_*ian 5

不要打开和关闭 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()
Run Code Online (Sandbox Code Playgroud)

编辑:好的,您需要关闭 .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()
Run Code Online (Sandbox Code Playgroud)