Office365 で、「企業カレンダー」と呼ばれるカレンダーを使用して共有メールボックスをセットアップしました。このカレンダーは、企業カレンダーにアクセスする必要があるすべてのユーザーに共有されます。私はメールボックスへの完全なアクセス許可を持っているので、Outlook で私のものと一緒に開きます。
カレンダーで新しいエントリまたは変更されたエントリをチェックし、詳細を記載したメールを送信する PowerShell スクリプトを作成しました。指定したフォルダが見つからないために失敗する場合があります。
次の 3 行は正常に実行されます。
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
これは、断続的に失敗する行です。
$current = $namespace.Folders.Item('Corporate Calendar').Folders.Item('Calendar').Folders.Item('Corp Calendar').Items
掘り下げている構造を見ることができます: Corporate Calendar Mailbox > Calendar > Corp Calendar
PowerShell が返すエラーは次のとおりです。
Exception calling "Item" with "1" argument(s): "The attempted operation failed. An object could not be found." At C:\Users\aaldrich\desktop\Scripts\Calendar.ps1:72 char:1
+ $current = $namespace.Folders.Item('Corporate Calendar').Folders.Item('Calendar' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation
一度これを行ったとき、名前空間を掘り下げたところ、Corporate Calendar メールボックスを除くすべてのメールボックスを表示できるようです。Outlook を再起動すると問題が解決します。次回このようなことがあれば、もう一度行って確認します。
新しい項目 ( ) をチェックする前に送受信も実装しました$namespace.SendAndReceive(1)
が、それを追加してもエラーの頻度は変わりませんでした。このエラーは、カレンダーが他の人によって編集されているときに最も発生するようですが、それはあまり一貫していません.
現在、スクリプトは私にのみメールを送信し、エラーがあればメールも送信します。ただし、最終的には、全員に自動的にメールを送信したいと考えています。
重要でない補足:「フォルダ アシスタントでパブリック フォルダを使用しないのはなぜですか?」と疑問に思う人もいるかもしれません。そのままの転送は、私たちの Exchange 組織では機能しません (MS は何ヶ月も検討してきました...)。添付ファイルとして転送すると、携帯電話からは閲覧できない方法で転送されます。標準の転送は、カレンダー イベントには役に立ちません。
ありがとう!
編集: また失敗しました。残念ながら、失敗した行を再度実行することができ、問題なく動作しました。それは以前に起こったことではありません。アイテムのチェック中に送受信が行われた場合、これらの問題が発生する可能性はありますか? 送信/受信を完了するのに 15 秒を与えてきました... その長さを増やします。