我试图以这种方式清空垃圾邮件。它仅标记已读取的电子邮件,但不会清空文件夹。
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$junk = $namespace.GetDefaultFolder(23)
$junk.Items | %{$_.Unread = $false} | %{$_.Delete()}
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Outlook)
Remove-Variable Outlook
我之前使用过Exchange Web Services,但我可以,但代码并不优雅:
$junk.Empty([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete, $true)
编辑:
我可以用这个
部分删除$junk | ForEach-Object {$_.Delete()}
我的意思是它一次只删除少量电子邮件,然后将它们移动到“已删除邮件”。我希望他们只是被清空了。
答案 0 :(得分:0)
不要对每个"使用"更改集合时循环 - 从Items.Count循环到1。