使用PowerShell从outlook读取最新的电子邮件

使用PowerShell从outlook读取最新的电子邮件,powershell,outlook,Powershell,Outlook,我正在尝试阅读主题行为“自动化”的Outlook电子邮件,并使用自定义脚本进一步处理。下面的脚本读取带有主题行的电子邮件,但它读取带有主题“Automation”的整个电子邮件计数 我希望能够只阅读最新的电子邮件,只处理特定的电子邮件内容,并将电子邮件标记为未读。然后阅读下一封主题相同的新电子邮件,只处理特定内容 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null $olFolders = "Microsoft.Off

我正在尝试阅读主题行为“自动化”的Outlook电子邮件,并使用自定义脚本进一步处理。下面的脚本读取带有主题行的电子邮件,但它读取带有主题“Automation”的整个电子邮件计数

我希望能够只阅读最新的电子邮件,只处理特定的电子邮件内容,并将电子邮件标记为未读。然后阅读下一封主题相同的新电子邮件,只处理特定内容

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.items | where { $_.subject -match 'Automation' } | Select-Object -Property body
假设我有10封主题为“自动化”的新电子邮件,处理第10封电子邮件并标记为已读,然后继续从9处理到1


如何实现这一点?

只需对每个对象使用
即可通过修改邮件项目的未读属性()

发表评论后,您可以验证outlook版本是否公开了未读属性:
$folder.Items |选择-第一个1 |获取成员
您应该找到以下属性:

未读属性bool UnRead(){get}{set}

我在脚本下面运行添加类型-程序集“Microsoft.Office.Interop.Outlook”| out null$olFolders=“Microsoft.Office.Interop.Outlook.olDefaultFolders”-作为[type]$outlook=new object-coobject-outlook.application$namespace=$outlook.GetNameSpace(“MAPI”)$folder=$namespace.getDefaultFolder($olFolders::olFolderInBox)$folder.Items |?{$|.subject-match“automation”}排序receivedtime-desc |选择对象-属性体,subject-First 1 |%{echo$\.body#使用body$\.Unread执行任务=$false#标记为已读}收到错误[异常设置“Unread”:“在该对象上找不到属性“Unread”。请验证该属性存在并且可以设置。”]我正在使用office2016如果有问题的话…我会用完整的代码更新我的答案Hi Loic,我在Outlook$文件夹中获取属性。Items | select-first 1 | get member您应该找到以下属性:未读属性bool UnRead(){get}{set},但我仍然会得到相同的错误。请帮助
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$folder=$namespace.GetDefaultFolder(6)
$folder.Items | 
    ?{$_.subject -match "automation" } |
    sort receivedtime -desc | 
    %{
         echo $_.body #do stuff with body 
         $_.Unread=$false #mark as read        
     }