2016-04-06 25 views
0

私はこの方法で迷惑メールを空にしようとしました。それは、電子メールの読み取りのみをマークしますが、フォルダは空にしません。PowerShell - 空の迷惑メール

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サービスを使用し、私でしたが、コードがエレガントではありません。

$junk.Empty([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete, $true) 

はEDIT:

私は部分的にこの

$junk | ForEach-Object {$_.Delete()} 

を削除することができますこれは、一度にいくつかの電子メールだけを削除してから、削除済みアイテムに移動することを意味します。私は彼らがただ空にされたことを望む。

答えて

0

コレクションループをItems.Countから1に変更するときは、 "for each"ループを使用しないでください。

+0

私はforeachを使用したくありません。 – skrubber

+0

あなたは上記のものを使用していますか? –

+0

私が混乱したらすみません。 Add-Type -assembly "Microsoft.Office.Interop.Outlook" $ Outlook =新しいオブジェクト - オブジェクトOutlook.Application $ namespace = $ Outlook.GetNameSpace( "MAPI" ) $ junk = $ namespace.GetDefaultFolder(23) $ junk.Items | %{$ _。未読= $ false} | %{$ _。Delete()} [System.Runtime.Interopservices.Marshal] :: ReleaseComObject($ Outlook) Remove-Variable Outlook' – skrubber

関連する問題