Powershell在读完身体后关闭.msg

时间:2017-07-12 06:41:22

标签: windows powershell

我想在powershell脚本中读取电子邮件文件的正文(.msg),但我只能打开一次因为文件被“锁定”或已经打开,所以第二次出错。 / p>

我的代码:

Get-ChildItem $scriptPath -Filter *.msg |
ForEach-Object {
    $outlook = New-Object -comobject outlook.application
    $msg = $outlook.Session.OpenSharedItem($_.FullName)
    $msg | Select-Object -ExpandProperty Body
    $outlook.Quit()
}

错误是:文件XXX无法打开。也许它已经打开了......

提前致谢

2 个答案:

答案 0 :(得分:1)

我知道这是一个旧线程,但是在搜索此问题时它是最高线程。这对我有用:

Get-ChildItem $scriptPath -Filter *.msg |
ForEach-Object {
    $outlook = New-Object -comobject outlook.application
    $msg = $outlook.Session.OpenSharedItem($_.FullName)
    $msg | Select-Object -ExpandProperty Body
    $msg.Close(1) # oldispose
    $msg = $null
}

答案 1 :(得分:0)

您使用的是哪个Outlook版本?

我的a bug in Outlook和解决方法是使用.msg属性标记readonly个文件。