Ich habe versucht, die Junk-E-Mail auf diese Weise zu leeren. Es kennzeichnet nur die gelesenen E-Mails, aber nicht den Ordner.PowerShell - Leere Junk-E-Mail
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
verwendete ich Exchange Web Services früher und ich konnte aber der Code ist nicht elegant:
$junk.Empty([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete, $true)
EDIT:
ich mit diesem
$junk | ForEach-Object {$_.Delete()}
teilweise löschen können Damit meine ich, dass die E-Mails nur zu einem bestimmten Zeitpunkt gelöscht werden und dann in die gelöschten Objekte verschoben werden. Ich wünschte, sie wären einfach leer.
Ich ziehe nicht die foreach zu verwenden. – skrubber
Ist es nicht das, was Sie oben verwenden? –
Tut mir leid, wenn ich verwirrt habe. Ich möchte, dass der erste Teil meiner Frage funktioniert: 'Add-Type -assembly" Microsoft.Office.Interop.Outlook " $ Outlook = Neu-Objekt -comobject Outlook.Application $ namespace = $ Outlook.GetNameSpace (" MAPI ") $ junk = $ namespace.GetDefaultFolder (23) $ junk.Items | % {$ _. Ungelesen = $ false} | % {$ _. Delete()} [System.Runtime.Interopservices.Marshal] :: ReleaseComObject ($ Outlook) Remove-Variable Outlook' – skrubber