使用Powershell解析.msg文件以获取目的地、来源、主题和日期

使用Powershell解析.msg文件以获取目的地、来源、主题和日期,powershell,msg,Powershell,Msg,我正在尝试从本地驱动器上的文件夹中保存的大约100个.msg文件中获取到,从,主题,发送日期,可能使用powershell在csv中获取所有信息 我运行了从另一个帖子得到的代码 Get-ChildItem "C:\--------\msgfileshere" -Filter *.msg | ForEach-Object{ $outlook = New-Object -comobject outlook.application $msg = $outlook.Crea

我正在尝试从本地驱动器上的文件夹中保存的大约100个.msg文件中获取到,从,主题,发送日期,可能使用powershell在csv中获取所有信息

我运行了从另一个帖子得到的代码

Get-ChildItem "C:\--------\msgfileshere" -Filter  *.msg |
ForEach-Object{
  $outlook = New-Object -comobject outlook.application
  $msg = $outlook.CreateItemFromTemplate($_.FullName)
  $msg | Select From,to,subject,Senton,Cc|ft -AutoSize
}
我能够获得主题和主题日期。
但并没有其他与发件人、收件人、抄送相关的信息。我是不是遗漏了什么


编辑:我能够获得发件人信息,该信息提供了系统。作为输出,但不是实际的电子邮件地址。

您的代码对我有效,但仅当联系人中存在该人时。您可以使用
$msg.sender |选择对象-属性地址
获取发件人的电子邮件地址,并使用
$msg.recipients |选择对象-属性地址
获取收件人的所有电子邮件地址。我会试一试并回复您,谢谢,所以我设法找到了发件人,结果是System.\u ComObject而不是emailaddresss。顺便说一下:不要继续创建新的outlook.application COM对象,也不要从内存中释放它。您一定会以这种方式遇到错误。仅在循环之前创建一次Outlook.application,然后使用
$null=[System.Runtime.Interopservices.Marshal]::ReleaseComObject($msg)$null=[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook);[System.GC]::Collect();[System.GC]::WaitForPendingFinalizers()
您的代码确实适用于我,但前提是我的联系人中存在此人。您可以使用
$msg.sender |选择对象-属性地址
获取发件人的电子邮件地址,并使用
$msg.recipients |选择对象-属性地址
获取收件人的所有电子邮件地址。我会试一试并回复您,谢谢,所以我设法找到了发件人,结果是System.\u ComObject而不是emailaddresss。顺便说一下:不要继续创建新的outlook.application COM对象,也不要从内存中释放它。您一定会以这种方式遇到错误。仅在循环之前创建一次Outlook.application,然后使用
$null=[System.Runtime.Interopservices.Marshal]::ReleaseComObject($msg)$null=[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook);[System.GC]::Collect();[System.GC]::WaitForPendingFinalizers()