2017-06-06 28 views
0

PowerShellコードでいくつかのEWSに苦労しています。送信済みアイテムと受信トレイフォルダの両方に同時にアクセスすることはできないようです。PowerShellを使用してEWSのInboxとSentItemsフォルダにアクセスする

ここに私のコードです:私はsentbox変数に送信済みアイテムフォルダを取得したい場合は、私は次のエラーを取得する

$ewsPath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" 
Add-Type -Path $ewsPath 
$ews = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList "Exchange2013" 
$ews.Credentials = New-Object Net.NetworkCredential('emailbox', 'password') 
$ews.AutodiscoverUrl("[email protected]") 
$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($ews,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox) 
$sentbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($ews,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::SentItems) 
$iv = New-object Microsoft.Exchange.WebServices.Data.ItemView -ArgumentList 10000           
$pvSet = New-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)            
$sentItems = $sentbox.FindItems($iv) 

Exception when calling "Bind" with "2" argument (s): "The request failed. The remote server returned an error: (501) Not implemented.

しかし、私は間に次の行を持っていた場合$ inboxと$ sentbox初期化は動作しますが、$ sentboxの$ findboxは失敗します。

$ews.AutodiscoverUrl("[email protected]") 
+0

コードを投稿することができますか?たとえば、取得したエラーがFindItemsであり、Bind(GetItem)で投稿したコードです。これは関連していないため、エラーが発生している場所で他のコードを実行する必要があります。 –

+0

私はまだデバッグしていたので、申し訳ありませんが、いくつかの悪いcopypastaを持っていた。 それは、私の$ sentboxのバインドが失敗するということです。しかし、2回目のバインド前にdiscoverurl()をやり直すと、$ sentitemsバインドは機能しますが、findItemsはまだ失敗します。 – Aurelien

+0

Autodiscoverは実際には意味を持ちません。一度検出されると変更されるべきではないserver.url値が入力されます。トレースを有効にして、サーバーに送られるリクエスト($ service.TraceEnabled = $ trueなど)を調べることができます。また、ewseditor https://ewseditor.codeplex.com/に、受信トレイをクリックするだけで、送信されたアイテムは、あなたのコードが同じ根底にあるdllなどとやっているのと同じことをすることになります –

答えて

0

ファイアウォールに関する問題です。 コードは機能します。

関連する問題