Exchange 予定表更新ツールを使用して夏時間に対応する方法

文書翻訳 文書翻訳
文書番号: 941018
すべて展開する | すべて折りたたむ

目次

はじめに

夏時間のクロックを設定するのには、システムをされるようにあらかじめ日の出と日没の両方以降の時間に発生します。複数の夏時間です。夕方には。多くの国の夏時間を観察します。これらのほとんどは国ある独自のルールや規制の場合夏時間開始し、終了します。

夏時間 (DST) の日付を変更することができます。年に 1 年。Microsoft Outlook ユーザーが Outlook を更新するためにカレンダーの DST 規則を変更するたびにします。前の期間DST 規則と現在の DST 規則は照会では、この資料には、「DST の延長期間。"

この資料では、アクションを示しています、。拡張時に発生するアドレスの予定表アイテムで Outlook にかかることがあります。夏時間の期間。この資料を参照してくださいする必要があります、アクションについても説明します。Microsoft Exchange Server に格納されている予定表アイテムを更新します。新しい DST 規則。この資料で紹介するソリューションする必要があります、Microsoft Exchange 予定表更新ツール (「Exchange ツール」)。

の夏時間の変更を準備する方法の詳細については、2007 年 (DST 2007) のすべての影響を受けるマイクロソフト製品は、次を参照してください。Microsoft の Web サイト:
http://support.microsoft.com/gp/cp_dst
2011 で、ロシア政府は、夏時間 (DST) をキャンセルするのには、法律を採用しました。詳細については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/gp/cp_dst#tab0
ロシア語での詳細については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/gp/cp_dst/ru#tab0

詳細

Exchange ツールについて

Microsoft Windows では、すべての古い DST 更新プログラムをインストールした後DST の変更期間中の予定が正しくできません。1 時間後の年代としてを表示します。これは両方定期は true ですし、単独の予定。したがってこれらの予定を更新する必要がありますが、Microsoft Office Outlook Web access、Outlook で正しく表示されます、アプリケーションでは、コラボレーション データ オブジェクトに基づいています。(CDO)。

Outlook は、という名前がタイム ゾーン データ更新ツールが用意されていますMicrosoft Office Outlook (「Outlook ツール」) のツールです。このツールのユーザーことができます。独自のカレンダーを更新すること。

詳細については、タイム ゾーン データの更新ツール、Microsoft では、この資料を表示するのには、次の資料番号をクリックします。ナレッジ ベース:
931667Microsoft Office Outlook は、タイム ゾーン データ更新ツールを使用して 2007 年の夏時間の変更に対処する方法
Exchange 予定表更新ツール ("Exchangeツール") と管理者が展開するのに直面している問題を回避することができます。Outlook ツールを全ユーザーに広く、ユーザーごとに実行されるようにすることで、Outlook ツールが正しくします。

Exchange ツールの概要

Exchange ツールは、次の 2 つの独立した実行可能ファイルで構成されます。これらファイルを次の表に示します。
元に戻す全体を表示する
ファイル名説明
Msextmz.exe この実行可能ファイルのタイム ゾーンを抽出します。Exchange Server を実行しているサーバー上のメールボックスからの情報です。これ実行可能ファイルも、指定された一連のメールボックスの予定表を更新します。ユーザーできます。
Msextmzcfg.exe によって この実行可能ファイルでは、関連する手順のほとんどを実行する構成ツールExchange Server サーバーを更新しています。

Exchange ツールの新しいバージョンについて

お客様からのフィードバックに基づいて、Exchange ツールの新しいバージョンをしました2007 年 8 月 13 日にリリースしました。この資料の新しいバージョンに言及する場合を想定しています、Exchange ツールです。以前のバージョンの Exchange ツールを実行している場合は、それをアンインストールし、新しいバージョンをインストールします。

新しいバージョンExchange ツールの次の機能強化は次のとおりです。
  • タイム ゾーンの抽出と予定表の更新プロセスfourfold 症状。
  • 構成ツールのユーザー インターフェイスがさらに効率的で直感的です。
  • 会議室やリソースを更新します。メールボックス、構成ツールに現在組み込まれています。
  • ユーザーのメールボックスを更新できるようになりましたに組み込まれている、構成ツール。
  • ここで、トラブルシューティングのドキュメントが含まれている、Exchange ツールを選択し、構成ツールに統合されます。
  • タイム ゾーンの抽出アルゴリズムとエラー処理機能が強化されます。
  • このログ出力プロセスがよりわかりやすいです。

Exchange ツールの実行のリスク

Exchange ツールを実行すると、危険がありますが単独の予定が正しく更新されません。たとえば、後、オペレーティング ・ システムの作成、ユーザーが単独の予定月の更新は更新されません正しく。

このリスクを軽減するには、いずれかを使用してください。次のメソッド。
  • 更新時間の間隔を縮小します。クライアント コンピューターと、メールボックスの予定表を更新する時刻。
  • 時間は、組織内のコンピューターが更新された場合前にを使用して、 定期的な会議のみを更新します。 設定高度な設定.

    通常、ユーザーは作成しないでください。シングル インスタンス予定月数を事前。そのため場合は、DST多くの月の前に、ほとんどの単独の会議の更新プログラムがインストールされましたDST の延長期間内は、new を使用して作成されます。DST 移行規則。この会議の更新はありません。
  • 正確な場合は、日付の場合、すべてのクライアント コンピューターされた更新を使用して、 オペレーティング システムの更新プログラムの日付 設定高度な設定.日付が指定されている場合は、シングル ・ インスタンスExchange がその日付以降後に作成された予定が更新されません。ツールです。
メモ クライアントでは、Outlook ツールまたは Exchange ツールを実行する場合Windows vista を実行しているコンピューターのメールボックスに対してツールを実行します。ホーム タイム ゾーンがニュージーランド標準時では、このツールを実行する必要があります、2 回目 2008 年 1 月 1 日以降にします。詳細については、「正常を参照してください。セクションの問題」。

メールボックス更新のオプション

次の表を更新することができる 5 つのオプションを一覧します。ユーザー メールボックスを使用して、DST 2007 タイム ゾーン規則を使用します。
元に戻す全体を表示する
オプション長所利点と欠点
Outlook ツールを各ユーザーに配布した後に指示ユーザーが各自のメールボックスを更新します。 このオプションは、リスクを回避できます、Exchange ツールの実行に関連付けられています。 ことは困難です。正しくとは、適切なタイミングで、すべてのユーザーが Outlook ツールを実行するを保証します。方法。

Outlook を持っていないユーザーができないを実行するのにはOutlook のツールです。

その他教育に努力が必要ユーザーの混乱を軽減します。
影響を受けるすべてのユーザーおよびサーバーに対して Exchange ツールを実行します。 このオプションは、ユーザーのさせずを提供します。 として、Exchange ツールの実行に関連する危険性します。「リスク」を Exchange ツールの実行に記載します。
唯一の定期的な予定を更新するのには、Exchange ツールを実行します。使用して各自のメールボックス内の単独の予定を更新できるようにします。Outlook のツールです。 単独の予定のリスクを低減不正確に更新されます。 Outlook ツールを実行する利点と欠点のあります。Exchange ツールの実行の利点と欠点を結合します。
Exchange ツールも Outlook ツールを実行します。ユーザーを確認します。自分の予定表を確認するのには、必要に応じたリクエストの予定を再作成するのには。 これオプションは、Exchange ツールの実行に関連付けられているリスクを回避できます。 影響を受けるすべての予定のすべてのユーザー リクエストを再作成しない限り、いくつか予定表します。項目 1 時間オフ DST の延長期間中にもあります。

行う必要があります。ユーザーの混乱を軽減するのには、追加の教育の作業を確認します。
Outlook ツールを各ユーザーに配布した後に指示ユーザーが各自のメールボックスを更新します。次に、タイム ゾーンの抽出モードを使用してください。ユーザーが Outlook ツールを実行しているかどうかを確認するのには Exchange のツールです。

ユーザーは、Outlook ツールを実行していない場合は、管理者ことができます。Exchange ツールを実行します。
このオプションがユーザーのリスクを軽減できません。適切なタイミングで、ツールの実行に関連付けられているリスクを避けることができます。Exchange ツールを実行するとします。 ユーザーがこのオプションです。Microsoft Office Outlook 2007年を実行しています。

Exchange ツールをインストールする方法

Exchange 予定表更新ツールのダウンロードには、自己解凍型実行可能ファイル (Msextmz.exe) のフォームです。このツールは利用可能です。「Microsoft ダウンロード センター」からダウンロードします。

元に戻す画像を拡大する
ダウンロード
ダウンロードExchange 予定表更新ツール パッケージ今すぐします。

ために、仮想マシンが作成されます。インストールし、Exchange ツールを使用します。Microsoft 仮想マシンに基づきますWindows Server 2003、Outlook 2007、Excel 2007 年の Microsoft Office、マイクロソフトOffice Word 2007。両方 Microsoft Virtual PC 2004 でバーチャル マシンの動作します。microsoft Virtual Server 2005 R2 とします。

詳細についてはExchange 予定表更新ツール用の仮想マシンについてをクリックして、次の Knowledge Base の資料を参照するには。
933185仮想マシンは、夏時間 2007年の予定表の更新には、Exchange 組織を展開するために利用可能なが
詳細についてはマイクロソフトのサポートをダウンロードする方法ファイル、Microsoft では、この資料を表示するのには、次の資料番号をクリックします。ナレッジ ベース:
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトは、このファイルのウイルスをスキャンしました。Microsoft は、最も使用されます。日に存在した、最新のウイルス検出ソフトウェア、ファイル送信されました。防止するセキュリティが強化されたサーバー上で、ファイルの保存します。ファイルに不正な変更。

Exchange ツールでサポートされている言語

Exchange ツールは英語でのみ利用可能です。このツールを実行します。だけは、英語 (米国) コンピューターにします。

Exchange ツールと互換性のあるバージョンの Exchange Server

Exchange ツールでは、次のバージョンのメールボックスを更新できます。Exchange Server の。
  • Microsoft Exchange Server 2007年エンタープライズ エディション
  • Microsoft Exchange Server 2007年の標準エディション
  • Microsoft Exchange Server 2003年エンタープライズ エディション
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Server Enterprise Edition
  • Microsoft Exchange 2000 Server の標準エディション

Exchange ツールでサポートされているオペレーティング システム

次の 32 ビット バージョンの Exchange ツールを実行します。オペレーティング ・ システム:
  • Microsoft Windows Server 2003
  • Microsoft Windows XP
  • Windows Vista

Exchange ツールを実行する前に行う

更新プログラムをインストールします。

Exchange ツールを実行する前に、そのクライアントを確認し、サーバーコンピューターは正しく更新されます。これを行うには、Windows DST 更新プログラムをインストールします。クライアントとサーバーにします。 詳細については情報は、資料を参照するのには、次の資料番号をクリックして、マイクロソフト サポート技術情報:
942763Microsoft Windows オペレーティング システム用の 2007 年 12 月累積的なタイム ゾーン更新プログラム

Microsoft Exchange Server を実行している場合2003 Service Pack 2 (SP2) をインストール、以下の更新プログラムのいずれかとして組織の必要に応じてください。
  • 911829 を更新します。
  • 924334 を更新します。
これらの更新プログラムの詳細については、次の資料番号をクリックしてください。「サポート技術情報」資料を表示するには
911829すべての編集作業を行うし、Outlook Web Access で作成フレームを有効にする] をクリックする必要があります、エラー メッセージが表示されます。
924334 メッセージ作成フォーム Exchange Server 2003 で Internet Explorer 7.0 と、Outlook Web Access クライアントでの S/MIME コントロールをインストールした後に応答を停止します。
ユーザーはエルサレムでは、中央にある場合ブラジル、または E. 南米のタイム ゾーンを参照してください、このガイドでは、(Microsoft Knowledge Base) の次の資料。

943390 再特定のタイム ゾーンの夏時間の変更を調整するのには、Outlook タイム ゾーン データ更新ツールを使用すると、Outlook の予定表アイテムが正しく配置しないされます。

システム要件を確認してください。

Exchange ツールは、コンピューター上でのみを実行する必要があります、次の条件が満たされます。
  • コンピューターに Microsoft Office Outlook 2003年の Service Pack があります。2 (SP2) または Microsoft Office Outlook 2007 をインストールします。
  • コンピューターに Outlook タイム ゾーン データのツールがあります。インストールされています。
  • マイクロソフト。NET Framework version 2.0 がインストールされている、クライアント コンピューター。
実行しているコンピューターに Exchange ツールを実行することはできません。または、Exchange システム管理ツールを Exchange Server します。インストールしようとした場合Exchange ツールの Exchange Server や、Exchange を実行しているコンピューターシステム管理ツールは、次のエラー メッセージが表示されます。
Microsoft Exchange 予定表更新ツールをインストールすることはできません。Microsoft Exchange します。

アクセス許可とその他のユーザーの要件を確認してください。

次の条件が満たされているを確認します。
  • 各 exchange インフォメーション ストアのアクセス許可を管理します。サーバーのメッセージ データベース (MDB) を更新します。
  • 送信者アクセス許可をすべてのメールボックスが更新します。
  • すべてのメールボックスのすべてのメールボックスへのアクセス権限があります。更新します。
  • コンピューター上でローカル管理者のアクセス許可が与えられますExchange ツールを実行しています。

「メールボックスのアクセス許可を与える」スクリプトについて

GrantMailboxPermission.vbs スクリプトの例を使用して付与することができます。ドメイン ユーザーのメールボックスへのフル アクセスと、"送信者"アクセス許可をすべてメールボックス。

Exchange Server ではこのスクリプトを実行することができます。Exchange 2000 Server または Exchange を実行しているコンピューター上の管理者Server 2003 です。Exchange を実行しているコンピューターでこのスクリプトを実行することはできません。Server 2007。Exchange 管理シェルを使用して、許可するただし、必要なアクセス許可。

.Vbs スクリプトのコードで提供されています、「関連情報」セクション。次の表でこの 2 つのモードを説明します。スクリプトを実行します。
元に戻す全体を表示する
モードコマンド説明
追加 CScript GrantMailboxPermission.vbs ?add ドメイン名 \ ユーザー名 ファイル名 次のコマンドを与えるに ドメイン名 \ ユーザー名 ユーザーのメールボックスへのフル アクセス入力に記載されている、ユーザーのメールボックスへのアクセス許可として送信ファイルです。

入力ファイルは、レガシーを含むテキスト ファイルでなければなりませんユーザーのメールボックスのドメイン名。これらの名前は改行で区切る必要があります。(CRLF) はリターン + ライン フィード。

スクリプトを生成します。GrantMailboxPermission.log ファイルです。このファイルは、メールボックスの記録ですが処理されました。ログ ファイルの 1 行目は、 ドメイン名 \ ユーザー名 与えられているユーザーアクセスします。このファイルは削除しないでください。このファイルは、削除モードで使用されます。

明示的な"アクセス拒否"の場合、スクリプトがユーザーに割り当てられています。"GrantMailboxPermission.err"という名前のファイルに情報をログに記録します。は、スクリプトがない許可または、アクセス許可を変更します。

一部のユーザーである場合関連付けられているセキュリティ グループの「へのアクセス、スクリプトを許可拒否」フル メールボックス アクセス] および [Send As の権限。ただし、ユーザーことはできません。メールボックスにログオンします。すべてのエラーが記録されます、GrantMailboxPermission.err ファイルです。
削除します。 CScript GrantMailboxPermission.vbs ?removeフル メールボックス アクセス] および [Send As、次のコマンドを削除します。GrantMailboxPermission.log に記載されている、メールボックスへのアクセス許可ファイルを ドメイン名 \ ユーザー名 ユーザーには。は、 ドメイン名 \ ユーザー名 指定された [ユーザー、GrantMailboxPermission.log ファイルです。
メモ
  • このスクリプトを実行しているコンピューターで実行すると、Exchange Server、スクリプト返します、ピリオド文字 (.) とスクリプトユーザーが正常に処理されます。スクリプトに感嘆符を返しますスクリプトにユーザーが正常に処理できない場合は、(!) を文字です。
  • タイム ゾーンの抽出モードの出力ファイルをすることはできません。このスクリプトの入力ファイルとして使用します。入力ファイルを作成するのにはスクリプトのタイム ゾーンの展開モード出力ファイルに内容を貼り付けるメモ帳で、内容を新しい文書として保存して、新しいドキュメントに使用入力ファイルです。

Exchange ツールを使用する方法

Exchange ツールを使用するのには、Exchange 予定表更新を開始します。構成ツール (msextmzcfg.exe によって)。このプログラムを全体に役立つ予定表の更新のプロセス。

タイム ゾーンの抽出処理を実行します。

メールボックスの予定表を更新するには、タイム ゾーンを判断する必要があります。カレンダー。タイム ゾーンの抽出処理のプロパティを検査し、そのタイム ゾーンを判断するのには、メールボックスの予定表の予定。実行するのにはゾーンの抽出プロセスには、次の手順を実行します。
  1. [ようこそ] ページをクリックします。 次へ.

    メモ [ようこそ] ページでは、構成ツールを紹介し、ツールを実行するために必要なアクセス許可について説明します。ページもこの記事へのリンクが用意されています。
  2. 構成ツールの設定を指定します。私たち少なくとも 200 メガバイト (MB) のディスク領域を割り当てることを推奨します。ログ記録します。

    クリックすると、既定の設定を変更するのには高度な設定.詳細については、高度です設定は、次の手順を以下の表を参照してください。
  3. ローカルの Active Directory に Exchange サーバーを選択します。更新対象となるディレクトリ サービスのフォレスト。次に、クリックします。次へ タイム ゾーンの抽出処理を開始します。

    メモ タイム ゾーンの抽出を既に実行している場合は、スキップすることができます。ここをクリック スキップ.

    表示、ステータスバーへのリンク、出力ログと、タイム ゾーンのリアルタイム表示抽出プロセスでが表示されます。後のタイム ゾーンの抽出プロセスのです。[完了] をクリックします 次へ.

    エラーが発生した場合は、トラブルシューティングのドキュメントへのリンクが表示されます。
  4. 構成する、 時間がないとメールボックスゾーン ページ、し、 次へ 予定表をスキャンするのには項目。

    メモ 場合はメールボックス レベルのプロパティを持たないユーザーは、ツールを検索します。そのユーザーのタイム ゾーンを示す、実際の会議や予定の工具をスキャン内、カレンダーのタイム ゾーンを決定します。数を指定することができます。スキャンを構成すると、予定表のアイテムの。は、大きな数、スキャンかかります、指定した項目のします。
  5. で、 不明なタイム ゾーンの表示を解決します。名前 ページで、ツール、ツールのタイム ゾーンにマップするように求められます以前のオペレーティング システムのタイム ゾーンには不明です。この操作を実行した後をクリックします。次へ
  6. 場合は、構成ツールは、複数のユーザーを検索します。ゾーンでは、表示されたら、いずれかを指定することによって手動で競合を解決する時間します。タイム ゾーンのユーザーの予定表を更新します。この操作を実行した後をクリックします。次へ.
  7. で、 メールボックスの DNs との未解決の時間を節約します。ゾーン ページで、タイム ゾーンが残っているユーザーがあるなし情報またはユーザーはタイム ゾーン情報が競合している記録で別のログ ファイル。クリックしてください。 次へ.
タイム ゾーンの抽出プロセスはこれで完了です。一覧ユーザーおよび抽出されたタイム ゾーンとは、出力ファイル (Output.txt) にあります。インストール ディレクトリ。

高度な設定

次の表は、高度な設定は、前の手順のステップ 2 でを構成できます。
元に戻す全体を表示する
設定機能シナリオ上の考慮事項適用性
定期的な会議のみを更新します。これDST が影響を受ける設定の更新は定期的な会議を変更します。DST の延長期間内に含まれる単独の予定はありません。かどうか、更新する必要がありますに関係なく更新します。場合はコンピューターの以前、組織を更新、この設定を使用します。

通常、人は単独の予定を作成しないでください多く数か月前。そのため、多くの月 DST 更新プログラムをインストールしていた場合前に、拡張の DST に分類される単独の会議のほとんどは期間は、新しい DST 移行規則を使用して作成されます。これら会議では、更新する必要はありません。
ユーザーは、シングル ・ インスタンスを作成した場合この設定が事前に多くの月を満たす、この会議更新されません。指定します。この設定をすべての会議のすべてのメールボックスに適用されます。ルーム、およびすべてのユーザーの予定表にします。
オペレーティング システムの更新プログラムのインストール日付この設定は、シングル ・ インスタンス指定予定作成するか、指定日以降後に更新されていません。更新します。すべてのクライアント コンピューターをした場合、正確な日付がわかっている場合更新すると、この設定を使用します。

これは会議を行うこの更新プログラムをインストールした後に作成されたが更新されます。このようなミーティングを分類します。新しいタイム ゾーン規則に準拠します。
この設定が有効な場合にのみは、クライアント コンピューターすべて 24 時間未満でとが更新されました更新プログラムの高浸透。(ある高浸透と割合更新されている、組織内のコンピューターは、大きい方には90% の範囲)。

さらに、管理者は 1 つだけ指定できます。日付を更新します。対応するタイム ゾーンで作成された会議特定の更新し、ゾーンを更新する必要があります時間の特定の設定します。

会議は更新を会議室を増設です。ルーム内の特定のタイム ゾーンです。

ユーザーの意味メールボックスが、その場合は、 SuppressExchange 設定するか、 SuppressAll 設定が指定されていない、ユーザーのメールボックスのみでゾーンを更新する特定の時刻に属してください。
この設定を適用するのにはすべてのメールボックスをすべての会議室をおよびすべてのユーザーの予定表にします。
SuppressExchangeMaxDepthこれらの設定をすべての予定になります、影響を受けるユーザーの予定表での夏時間の変更に関係なく更新するのにはかどうか、ユーザーの予定表アイテムの開催者です。

場合は、ユーザーは、予定表アイテムの開催者、出席者に更新を送信されません人Exchange のメールボックスにあります。Exchange を持っていない出席者に更新が送信されます。メールボックス。

は、 MaxDepth 設定のレベルを指定します。どの参加者を決定する実行される配布リストの展開Exchange のメールボックスと、参加者ではないがあります。
場合は、この設定を使用します。Exchange のユーザーは開催者から会議の更新を受信するのにしたくないです。DST の延長期間によって影響を受ける会議。

は、 SuppressExchange 設定されるより、 SuppressAll これらの設定は、組織を Exchange 以外がある場合サーバーの予定表と会議出席者を含むようにスケジュールされているかどうかは、組織には外付けです。
会議の更新は送信されませんを除くExchange 以外のユーザーにします。したがって、することを確認、同じミーティングのコピーします。更新可能なすべての出席者に対して、組織内のすべてのメールボックスする必要があります。更新できません。

このような状況の数が大幅に増加します。メールボックスを更新する必要があります。このため、処理に要する時間があります。増加します。

大きくすると、入れ子になった配布リストの出席者にはリスト、出席者、会議のために決定する高価なプロセスは内容を出席者が Exchange にメールボックスがあるかどうかを確認します。このオプションを指定した場合設定し、高い値を設定、 MaxDepth パラメーターは、ドメインにかなりの負荷がかかってしまう可能性がありますコント ローラー。
この設定は、ユーザーのメールボックスにのみ適用されます。
SuppressAllこの設定ではすべてがDST が影響を受けるユーザーの予定表の予定に変更します。ユーザーはこれらの予定表の開催かどうかにかかわらず更新項目。

ユーザーが予定表アイテムの開催者の場合は、更新プログラムがあります。出席者に送信されません。
出席者にしたくない場合、この設定を使用します。影響を受ける会議の開催者から会議の更新を受信、DST の延長期間。会議の更新は送信されません。したがってを確認するのには確認可能なすべての出席者に対して、同じ会議のコピーが更新されています。組織内のすべてのメールボックスを更新する必要があります。

このような状況可能性があります。更新する必要があるメールボックスの数を大幅に向上します。そのため、処理に要する時間が増加可能性があります。

ない参加者更新プログラムを受信しないメールボックスは、Exchange があります。自分の予定があります。実行されている、メール システムによっては、によって更新します。管理者の動作します。
この設定にのみ適用されます。ユーザーのメールボックスにします。

会議室とリソース メールボックスを更新します。

会議室やを回避するのには、リソース メールボックスを更新する必要があります。予約の競合しています。これを行うには、次の手順を実行します。
  1. で、 リソースと会議室を指定します。予定表 ページ]、[型]、または [会議室のエイリアスの一覧の貼り付け組織内でします。クリックしてください。 解決 エイリアスを検証するのにはし 次へ.
  2. で、 タイム ゾーンのリソースを解決し、会議室の予定表 ページで、このツールを手動で確認します。会議室をされていない場合は、会議室のタイム ゾーンを指定します。タイム ゾーンがあります。これを行うし、 次へ.
  3. 通知する通知ページが表示されるツール予定表を更新することです。クリックしてください。 次へ.
  4. ステータス バー、出力へのリンクを記録する、ことを確認し、リアルタイムの表示をツールの出力を表示します。クリックしてください。次へ.

    エラーが発生する場合へのリンクをトラブルシューティングのドキュメントは、このページの下部に表示されます。

ユーザーのメールボックスの予定表を更新します。

これを行うには、次の手順を実行します。
  1. で、 ユーザーのメールボックスを更新するための設定予定表 ページで、設定を更新します。

    If指定していない、 SuppressExchange またはSuppressAll 高度な設定を選択するタイム ・ ゾーンDST が影響を受けます。それ以外の場合は、すべてのタイム ゾーンを選択します。

    クリックしてください。次へ.
  2. 通知する通知ページが表示されるツール予定表を更新することです。クリックしてください。 次へ.
  3. ステータス バー、出力へのリンクを記録する、ことを確認し、リアルタイムの表示をツールの出力を表示します。更新後[完了] をクリックします 次へ.

    エラーが発生する場合は、これの一番下に、トラブルシューティングのドキュメントへのリンクが表示されます。ページです。
  4. クリックしてください。 [完了].

Exchange ツールのログ ファイルとサブディレクトリ

ログ ファイル

Exchange ツールを以下のログ ファイルを作成、インストール先ディレクトリ:
  • Output.txt

    このファイルにはすべてのユーザーのメールボックスの一覧が含まれていることタイム ゾーン情報と共に抽出されました。
  • TimeZoneExtraction.log

    このログには出力すると、タイム ゾーンが含まれています。抽出プロセスのすべてのサーバー。
  • ResourceUpdate.log

    このログには更新プロセスの出力が含まれています。会議室とリソース メールボックスをします。
  • UserUpdate.log

    このログには出力すると、ユーザーが含まれています。メールボックスの更新プロセスのすべてのサーバー。
  • CalendarScan.log

    このログには出力すると、予定表が含まれています。プロセスのすべてのサーバーをスキャンします。
  • ConflictUsers.txt

    このログに競合が発生するを持つユーザーの一覧が含まれています。タイム ゾーンです。たとえば、ユーザーのメールボックス プロパティことを示す、複数のタイム ゾーンに属しています。
  • NonExistent.txt

    このログにタイム ゾーンを持たないユーザーの一覧が含まれています。情報です。

サブディレクトリ

Exchange ツールには、次のサブディレクトリに作成されます、インストール先ディレクトリ:
  • リソース

    これは、更新プロセスの作業サブディレクトリです。会議室とリソース メールボックスをします。このディレクトリ次のファイルは次のとおりです。
    • Msextmz.log

      これは Exchange のツールの出力ファイルです、プロセスを更新します。
    • Errors.txt

      このファイルには、メールボックスの一覧が含まれます。
    • Processed.txt

      このファイルにされたメールボックスの一覧が含まれています。正常に更新されました。
    メモ 作業のすべてのサブディレクトリには、これらのファイルが含まれています。

    は、サブディレクトリのリソースには、次のサブディレクトリも含まれています。
    • ログ ・ ファイル

      このサブディレクトリには各メールボックスの更新のログが含まれています。正常に更新されました。各更新プログラムのログのリストを含める必要があります。更新された会議。
  • サーバー名

    各サーバーに対して 1 つのサブディレクトリがあります。タイム ゾーンの抽出処理または予定表の更新を行った。これらのサブディレクトリには下にサブディレクトリが含まれます。
    • CalendarScan

      これは、予定表のスキャンの作業サブディレクトリです。プロセスです。
    • 抽出

      これは、タイム ゾーンの作業サブディレクトリです。抽出処理します。
    • 更新プログラム

      これは、ユーザーのメールボックスの作業サブディレクトリです。プロセスを更新します。次のサブディレクトリが含まれます。
      • ログ ・ ファイル

        このサブディレクトリには各メールボックスの更新のログが含まれています。正常に更新されました。各更新プログラムのログのリストを含める必要があります。更新された会議。

Exchange ツールの実行後に行う

すべての Exchange に対して Exchange ツールを実行後環境内には、適切な Exchange Server の DST 更新プログラムを適用します。次に、Exchange Server のバージョンとサービスで構成されているパックレベルです。バージョン Exchange Server での更新をインストールします。順序です。

2007 Exchange Server します。
940006 更新プログラムのロールアップ 4 の詳細については、Exchange Server 2007
Exchange Server 2007年用の更新プログラムのロールアップ 4 が含まれています。以下の DST 修正します。
  • 937656 2007 年にニュージーランドで夏時間 (DST) を起動すると、Exchange 2007 の Outlook Web Access での問題が発生します。
  • 932561 場合は 1 つの組織がウェスタンオーストラリアのタイム ゾーンでは、Exchange 組織に Exchange 2007 を使用して送信される予定が 1 時間が間違っています
2003 SP2 を Exchange Server します。
プログラム 926666 Exchange 2003 Service Pack 2 の 2007 年の夏時間変更の更新
931915 ニューファンドランドにおける 2007 年の夏時間変更について Exchange Server 2003 Service Pack 2 用の更新プログラム
929895 Exchange Server の異なる組織間で送信される予定が 1 一方の組織がウェスタンオーストラリアのタイム ゾーンで場合時間が無効です。
937653 ニュージーランドの変更の夏時間の期間 2007 年後 Exchange Server 2003年で 1 つまたは複数の問題が発生します。
2003 SP1 を Exchange Server します。
940123 2007 年にニュージーランドで夏時間 (DST) と、Exchange 2003 で Service Pack 1 を起動問題が発生します。

既知の問題

  • Outlook Web Access で作成した定期的な会議が Exchange ツールで更新されません。

    Exchange Server の更新プログラムをインストールする場合は、会議を定期的な予定がメールボックスを更新する前に、Exchange サーバーOutlook Web Access で作成した Exchange ツールで更新されません。

    この問題を解決するには、Exchange Server の更新プログラムを削除、実行、ツールを交換し、交換の Exchange Server 更新プログラムを再インストールサーバーです。
  • Exchange ツールを実行すると Exchange 2007 を再起動する必要があります。

    予定表アイテムを正しく表示するを再起動する必要があります。Outlook Web Access では、Exchange ツールを実行した後、Exchange サービスExchange 2007。
  • Exchange ツールをインストールすることはできません。

    場合は、Exchange ツールが正常にインストールされていません次のレジストリ キーのいずれかが存在します。
    • HKEY_CLASS_ROOT\Outlook.Application.9
    • HKEY_CLASS_ROOT\Outlook.Application.10
    このシナリオでは、次のエラー メッセージが表示されます。Exchange ツールをインストールしようとします。
    Exchange Serverこのバージョンで再配置するための予定表ツールをインストールことはできません。Outlook します。
    この問題を回避するには、以下のレジストリ キーを削除、この Exchange ツールをインストールし、レジストリの復元キーです。

    重要です このセクション、メソッド、またはタスクには方法を示す手順が含まれていますレジストリを変更します。場合は、変更する深刻な問題がただし、発生する可能性があります、レジストリ誤ってします。そのため、この手順を実行することを確認します。慎重にします。これを変更する前に追加された保護のため、レジストリのバックアップを作成します。その後、問題が発生した場合、レジストリを復元できます。詳細についてはバックアップ、レジストリを復元、次の資料をクリックする方法について「サポート技術情報」資料を参照する数。
    322756 バックアップおよび Windows のレジストリを復元する方法
  • サーバーあたり処理できるメールボックスの数に制限があります。

    ユーザー] ボックスの一覧で、タイム ゾーンの展開モードでは、Msextmz.exe をサーバー上だけに 65,535 のメールボックスを処理できます。サーバーがある場合65,535 個を超えるメールボックスのあるメールボックスは処理されません。
  • パブリック フォルダーの予定表は更新されません。

    Exchange ツールは、パブリック フォルダーを更新しません予定表。パブリック フォルダーの予定表を更新する方法の詳細についてを参照してください。Outlook ツールのドキュメント。
  • 同じ環境では、Outlook ツールと Exchange ツールを実行できます。

    メールボックスを持つ Exchange ツールを実行する場合既にされた Outlook ツール、またはその逆の場合を更新、サイド発生なし効果。ただし、Exchange ツールを実行する場合は、必要はありませんをユーザーに個別に Outlook ツールを実行します。
  • 会議以外のアラームは予想よりも後で表示されます。

    ない会議のアラームをによって更新されるメールボックスExchange ツールは Outlook はしないメールボックスに接続した場合に更新されません。オンライン モードにします。このような状況では、1 時間のアラームの表示よりも必要です。

    Outlook がオンライン モードでは接続している場合は、行う必要があります。予定表の予定の誤ったアラームを調整する、Outlook ツール検索します。さらに、アラーム検索フォルダーがメールボックスに存在しません。したがって、ツール、電子メール アイテム、連絡先、またはその他のアラームは更新されません。

    たとえば、ツール電子メール アイテムのアラームは更新されません。将来的にフォロー アップします。このツールもは更新されず、アラームを持つ作業項目を送信します。
  • エラー メッセージが表示される:"'の Microsoft Exchange 予定表更新ツール' の以前のバージョンが検出されたために、インストールできません。それらをアンインストールしてセットアップをもう一度実行してください"

    Exchange 予定表更新プログラムを以前にインストールした場合ツールのバージョン 1.0、Exchange をインストールする前にこのバージョンをアンインストールする必要があります。予定表更新ツールのバージョン 2.0 です。

    Exchange 予定表更新ツールバージョン 1.0 で含まれている自己解凍型実行可能ファイルとして配布されました。2 つの .msi パッケージ (Msextmz.msi および Msextmzcfg.msi)。両方をアンインストールする必要があります。Exchange ツールのバージョン 2.0 をインストールする前にパッケージします。

    場合は、まだ問題が発生するは、Exchange ツールのバージョン 2.0 をインストールすると、再インストールし、Exchange ツールのバージョン 1.0 をアンインストールしてください。しないでください。これを使用して、.msi パッケージではなくを使用して、 追加または削除します。プログラム コントロール パネルの機能。その後、コンピューターを再起動し、次に、Exchange ツールのバージョン 2.0 をインストールします。

    この手順をしている場合動作しない、直接 .msi パッケージからバイナリを抽出します。
  • Outlook または Exchange の更新ツールを実行すると、予定オフ 1 時間で上のメールボックスのホーム タイム ゾーンがニュージーランド標準時があります。

    この現象は発生する場合、次のシナリオtrue:
    • Outlook または Exchange の更新ツールを実行します。Windows Vista を実行しているコンピューターです。
    • ホーム タイム ゾーンのされている、メールボックス更新は、ニュージーランド標準時です。
    この問題を回避するには、Outlook を実行する必要がありますか2 回目 1 月以降のメールボックスに対して Exchange の更新ツール1、2008年。

    この現象は Windows Vista のタイム ゾーンを処理するために発生しますその他のバージョンの Windows よりも異なる方法での情報の操作を行います。実行されない場合は、Outlook または Exchange の更新ツール 2008 年 1 月 1 日以降に再度すべて第 2 の DST イベントの予定は 1 時間オフになります。第 2 の DSTイベントには 2008 年 3 月 16 日 〜 2008 年 4 月 6 日からの日付が含まれています。

    そうしないと1 2008 年 1 月の予定で、第 2 の DST を更新するまで待機します。イベントでは、コンピューターから Outlook または Exchange の更新ツールを実行できます。Windows XP または Windows Server 2003 を実行しています。
  • M/月/日の形式には、年/月/日の形式で日付が変更されます。

    設定は、 オペレーティング システムの更新プログラムの日付 オプションの交換予定表更新ツール。これを行うと、Exchange 予定表更新ツール正常に機能しません。この問題は、M/月/日年/月/日の日付の形式が変更されるために発生します。

    またのようなエラー メッセージ、次のエラー メッセージがエラー ログに記録されます。
    [2008/02/28 7時 10分: 21AM] [776]: wmain: 構成 - エラー 0x80070057 を読み取れませんでした。
    この問題、次のセクションのサンプル メールボックスの不適切なオプション設定のために発生します。サーバー.ini ファイルです。
    ServerDN = /O=OrgName/OU=AdminGroup/cn=Configuration/cn=Servers/cn=ServerName 
    LogDirectory = C:\Program Files\MSExTmz\ServerName\Update\LogFiles\ 
    ErrorFile = C:\Program Files\MSExTmz\ServerName\Update\errors.ServerName.txt 
    ProcessedFile = C:\Program Files\MSExTmz\ServerName\Update\processed.ServerName.txt 
    LogFile = C:\Program Files\MSExTmz\ServerName\Update\msextmz.ServerName.log 
    SystemPatchDate = 2/28/2008  
    DebugFile = C:\Program Files\MSExTmz\debug\ServerName.debug.bin 
    PerMailboxTimeLimit = 15 
    PostMailboxDelay = 0 
    RebaseOptions = 171 
    InputFile = C:\Program Files\MSExTmz\ServerName\Update\Mailboxes.ServerName.txt 
    
    "SystemPatchDate"行「2/28/08 します。」の日付が含まれることに注意してください。この日付は、DD/年/日の形式で必要があります。

    この問題を回避するには、使用しない、 オペレーティング システムの修正プログラム日付 オプションです。

関連情報

「メールボックスのアクセス許可を与える」スクリプト

Option Explicit
' For FileSystemObject
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const TristateTrue = -1
Const TristateUseDefault = -2
Const TristateFalse = 0

'Permission Type: Allow or Deny
Const ADS_ACETYPE_ACCESS_ALLOWED = &H0
Const ADS_ACETYPE_ACCESS_DENIED = &H1
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6

Const ADS_ACEFLAG_INHERIT_ACE = &H2
Const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &H4
Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8
Const ADS_ACEFLAG_INHERITED_ACE = &H10
Const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &H1f
Const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &H40
Const ADS_ACEFLAG_FAILED_ACCESS = &H80

'Declare ADSI constants
Const ADS_SCOPE_SUBTREE = 2
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_OPTION_REFERRALS	= 1
Const ADS_SECURITY_INFO_DACL = 4
Const ADS_CHASE_REFERRALS_NEVER = &h00 
Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 
Const ADS_CHASE_REFERRALS_EXTERNAL = &h40

'Microsoft Exchange Server
Const EX_MB_SEND_AS_ACCESSMASK  = &H00100
Const EX_FULLMAILBOX_ACCESSMASK = 1
Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"

'Application Parameter Index
Const ARG_INDEX_MODE = 0
Const ARG_INDEX_USERNAME = 1
Const ARG_INDEX_FILENAME = 2
Const MIN_ARG = 1

Const MODE_INVALID = -1 
Const MODE_ADD = 0
Const MODE_REMOVE = 1

Const ADD = "-ADD"
Const REMOVE = "-REMOVE"

'Application Const String
Const EMPTYSTRING = ""
Const ERROR_FILENAME = "GrantMailboxPermission.err"
Const OUTPUT_FILENAME = "GrantMailboxPermission.log"
Dim OUTPUT_DELIMITER
OUTPUT_DELIMITER = vbTab

'Logging file
Dim objFSO
Dim objfileError
Dim objfileOutput
Dim objfileImport
Dim objconn
Dim objCommand
Dim rootDSE
Dim sDomainContainer
Dim sUserLDAPPath
Dim objUser
Dim objSDNTsecurity
Dim objDACLNT
Dim objDACLEX
Dim objSDMailbox
Dim fFMA
Dim fSendAs
Dim AccessTypeForFMA
Dim AccessTypeForSendAS
Dim fAddedFMA
Dim fAddedSendAs
Dim fRemovedFMA
Dim fRemovedSendAs
Dim sArraySplit
Dim sOneRow
Dim sGrantedUser
Dim dArgCount
Dim cScriptMode
Dim dArgExpected
Dim fOneError

On Error Resume Next
'Parameter Verification
dArgCount = Wscript.Arguments.Count
If (dArgCount < MIN_ARG) Then
	DisplaySyntax
End If

cScriptMode = MODE_INVALID
Select Case UCase(WScript.Arguments(ARG_INDEX_MODE))
	Case ADD
		cScriptMode = MODE_ADD
		dArgExpected = ARG_INDEX_FILENAME + 1
	Case REMOVE
		cScriptMode = MODE_REMOVE
		dArgExpected = ARG_INDEX_MODE + 1
	Case Else
		cScriptMode = MODE_INVALID
End Select

If (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then
	DisplaySyntax
End If

If (cScriptMode = MODE_ADD) Then
	sGrantedUser = WScript.Arguments(ARG_INDEX_USERNAME)
	If (IsValidUserName(sGrantedUser) = False) Then
		DisplaySyntax
	End If
End If

CreateImportExportFiles

If (cScriptMode = MODE_ADD) Then
	err.Clear
	
	'Prepare LDAP connection.
	Set objconn = CreateObject("ADODB.Connection")
	Set objCommand = CreateObject("ADODB.Command")
	objconn.Provider = "ADSDSOObject"
	objconn.Open "ADs Provider"
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		objfileError.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		WScript.Quit
	End If
		
	Set rootDSE = GetObject("LDAP://rootDSE")
	sDomainContainer = rootDSE.Get("defaultNamingContext")
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to find a Domain Container:" & err.Description)
		objfileError.WriteLine("Failed to find a Domain Container:" & err.Description)
		WScript.Quit
	End If
		
	Set objCommand.ActiveConnection = objconn

	Do While objfileImport.AtEndOfStream <> True
		fOneError = False
		sUserLDAPPath = EMPTYSTRING
		err.Clear

		sOneRow = Trim(objfileImport.ReadLine)
		If sOneRow <> EMPTYSTRING Then
		
		    sUserLDAPPath = GetLDAPPathFromLegacyDN(sOneRow)
		    If (err.number <> 0) Then
			    objfileError.WriteLine("Failed to get user's LDAP path from " & sOneRow)
			    fOneError = True
			    err.Clear
		    End If

		    If (fOneError = False) Then
			    Set objUser = GetObject(sUserLDAPPath)
			    If (err.number <> 0) Then
				    objfileError.WriteLine("Failed to get user object from " & sUserLDAPPath)
				    objfileError.WriteLine("Error: " & err.Description)
				    fOneError = True
				    err.Clear
			    End If
		    End If
    	
		    If (fOneError = False) Then
			    Set objSDMailBox = objUser.MailboxRights
			    Set objDACLEX = objSDMailbox.DiscretionaryAcl
			    Set objSDNTsecurity = objUser.ntSecurityDescriptor
			    Set objDACLNT = objSDNTsecurity.DiscretionaryAcl
			    If (err.number <> 0) Then
				    objfileError.WriteLine("Failed to get DACL of " & sUserLDAPPath)
				    objfileError.WriteLine("Error: " & err.Description)
				    fOneError = True
				    err.Clear
			    End If
		    End If

		    ' Verify Full Mailbox Access and Send As permissions.
		    fFMA = False
		    fSendAs = False
		    AccessTypeForFMA = ADS_ACETYPE_ACCESS_ALLOWED
		    AccessTypeForSendAS = ADS_ACETYPE_ACCESS_ALLOWED

		    If (fOneError = False) Then
			    CheckFullMailboxAccess objDACLEX, sGrantedUser, fFMA, AccessTypeForFMA
			    CheckSendAs objDACLNT, sGrantedUser, fSendAs, AccessTypeForSendAS
			    If (err.number <> 0) Then
				    objfileError.WriteLine("Failed to Check permission of " & sUserLDAPPath)
				    objfileError.WriteLine("Error: " & err.Description)
				    fOneError = True
				    err.Clear
			    End If
		    End If

		    'If Send As or Full Mailbox Access permissions do not exist, add these permissions.
		    If ( (AccessTypeForFMA = ADS_ACETYPE_ACCESS_DENIED) Or (AccessTypeForSendAs = ADS_ACETYPE_ACCESS_DENIED_OBJECT) ) Then
			    'If Deny access is already granted, do not add permissions for this user.
			    objfileError.WriteLine("Deny permission already added: " & sUserLDAPPath)
			    fOneError = True
		    End If
    		
		    If ( fOneError = False And ((fFMA = False) Or (fSendAs = False)) ) Then
			    fAddedFMA = False
			    fAddedSendAs = False
    			
			    If (fFMA = False) Then
				    'Add Full Mailbox Access permissions.
				    err.Clear
				    AddAce objDACLEX, sGrantedUser, EX_FULLMAILBOX_ACCESSMASK, ADS_ACETYPE_ACCESS_ALLOWED, ADS_ACEFLAG_INHERIT_ACE, 0,0,0
				    objSDMailbox.DiscretionaryAcl = objDACLEX
				    objUser.MailboxRights = Array(objSDMailbox)
				    If ( err.number <> 0 ) Then
					    objfileError.WriteLine("Failed to add FullMailbox Access: " & sUserLDAPPath)
					    objfileError.WriteLine("Error: " & err.Description)
					    fOneError = True
					    fAddedFMA = False
					    err.Clear
				    Else
					    fAddedFMA = True
				    End If
			    End If
    			
			    If (fSendAs = False) Then
				    'Add Send As permissions.
				    err.Clear
				    AddAce objDACLNT, sGrantedUser, EX_MB_SEND_AS_ACCESSMASK, ADS_ACETYPE_ACCESS_ALLOWED_OBJECT, 0,1, EX_MB_SEND_AS_GUID, 0
				    objSDNTsecurity.DiscretionaryAcl = objDACLNT
				    objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
				    objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
				    If ( err.number <> 0 ) Then
					    objfileError.WriteLine("Failed to add SendAs permission: " & sUserLDAPPath)
					    objfileError.WriteLine("Error: " & err.Description)
					    fOneError = True
					    fAddedSendAs = False
					    err.Clear
				    Else
					    fAddedSendAs = True
				    End If
			    End If

			    If (fOneError = False ) Then 
				    objUser.SetInfo
				    If (err.number <> 0) Then
					    objfileError.WriteLine("Failed to update user: " & sUserLDAPPath)
					    objfileError.WriteLine("Error: " & err.Description)
					    fOneError = True
					    err.Clear		
				    Else
					    'Update logging.
					    objfileOutput.WriteLine(sUserLDAPPath & OUTPUT_DELIMITER & fAddedFMA & OUTPUT_DELIMITER & fAddedSendAs)		
				    End If
			    End If
		    End If

		    Set objUser = Nothing
		    Set objSDNTsecurity = Nothing
		    Set objDACLNT = Nothing
		    Set objDACLEX = Nothing
		    Set objSDMailBox = Nothing

		    If (fOneError = True) Then
			    WScript.StdOut.Write("!")
		    Else
			    WScript.StdOut.Write(".")
		    End If
        End If
	Loop

Set rootDSE = Nothing
Set objCommand = Nothing
Set objconn = Nothing

End If

If (cScriptMode = MODE_REMOVE) Then
	'Retrieve the granted user from the first line of the import file.
	sGrantedUser = objfileImport.ReadLine
	If (IsValidUserName(sGrantedUser) = False) Then
		WScript.StdOut.WriteLine("Invalid User in import file. please check import file..")
		objfileError.WriteLine("Invalid User in import file. please check import file..")
		WScript.Quit
	End If
	
	Do While objfileImport.AtEndOfStream <> True
		fOneError = False
		sUserLDAPPath = EMPTYSTRING
		fAddedFMA = False
		fAddedSendAs = False
		fRemovedFMA = False
		fRemovedSendAs = False
		err.Clear

		sOneRow = objfileImport.ReadLine
		sArraySplit = Split(sOneRow, OUTPUT_DELIMITER)

		'The first column is the LDAP path.
		sUserLDAPPath = sArraySplit(0)
		'The second column is Full Mailbox Access permissions.
		fAddedFMA = sArraySplit(1)
		'The third column is Send As permissions.
		fAddedSendAs = sArraySplit(2)

		Set objUser = GetObject(sUserLDAPPath)
		If (err.number <> 0) Then
			objfileError.WriteLine("Failed to get user object from " & sUserLDAPPath)
			objfileError.WriteLine("Error: " & err.Description)
			fOneError = True
			err.Clear
		End If
		
		If ((fOneError = False) And (fAddedFMA = "True")) Then		
			Set objSDMailBox = objUser.MailboxRights
			Set objDACLEX = objSDMailbox.DiscretionaryAcl
			fRemovedFMA = RemoveFullMailboxAccess(objDACLEX, sGrantedUser)
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to Remove Full MailboxAccess from " & sUserLDAPPath)
				objfileError.WriteLine("Error: " & err.Description)
				fOneError = True
				err.Clear
			End If
			
			If (fRemovedFMA = False) Then
				objfileError.WriteLine("Couldn't find Full mailbox access permission on " & sUserLDAPPath)
			End If
			
			If ((fOneError = False) And (fRemovedFMA = True)) Then
				objSDMailbox.DiscretionaryAcl = objDACLEX
				objUser.MailboxRights = Array(objSDMailbox)
			End If
		End If

		If ((fOneError = False) And (fAddedSendAs = "True")) Then		
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			Set objDACLNT = objSDNTsecurity.DiscretionaryAcl

			fRemovedSendAs = RemoveSendAs(objDACLNT, sGrantedUser)
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to Remove SendAs from " & sUserLDAPPath)
				objfileError.WriteLine("Error: " & err.Description)
				fOneError = True
				err.Clear
			End If

			If (fRemovedSendAs = False) Then
				objfileError.WriteLine("Couldn't find SendAs permission on " & sUserLDAPPath)
			End If
			
			If ((fOneError = False) And (fRemovedSendAs = True)) Then
				objSDNTsecurity.DiscretionaryAcl = objDACLNT
				objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
				objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
			End If
		End If

		If ((fOneError = False) And (fRemovedFMA Or fRemovedSendAs)) Then
			objUser.SetInfo
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to update ADSI for user: " & sUserLDAPPath)
				objfileError.WriteLine("Error: " & err.Description)
				fOneError = True
				err.Clear		
			Else 
				If ( fRemovedFMA Or fRemovedSendAs ) Then
					'Update logging.
					objfileError.WriteLine("Removed Permission from " & sUserLDAPPath & OUTPUT_DELIMITER & fRemovedFMA & OUTPUT_DELIMITER & fRemovedSendAs)
				End If
			End If
		End If

		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
	Loop
End If

CloseImportexportFiles

Function IsValidUserName (sUserName)
	Dim dPosition
	dPosition = InStr(1, sUserName, "\")
	If (dPosition = 0 ) Then
		IsValidUserName = False
		objfileError.WriteLine("Invalid User:" & sUserName)
	Else
		IsValidUserName = True
	End If
End Function

Function CheckSendAs (objNTSD, sUser, fSendAs, AccessType)
	Dim intACECount
	Dim objACE
	
	err.Clear
	fSendAs = False
	AccessType = ADS_ACETYPE_ACCESS_ALLOWED
	intACECount = objNTSD.AceCount

	If intACECount Then
		For Each objACE In objNTSD
			err.Clear
			If ( (UCase(objACE.Trustee) = UCase(sUser)) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then
				fSendAs = True
				AccessType = objACE.AceType
			End If
		Next
	End If	

	If (err.number <> 0) Then
		objfileError.WriteLine("Check SendAs permissions Failed : " & sUser)
		objfileError.WriteLine("Error: " & err.Description)
		err.Clear
		fOneError = True
	End If
	Set objACE = Nothing
End Function

Function CheckFullMailboxAccess (objACL, sUser, fFoundFMA, AccessType)
	Dim intACECount
	Dim objACE

	err.Clear
	fFoundFMA = False
	AccessType = ADS_ACETYPE_ACCESS_ALLOWED
	intACECount = objACL.AceCount
	If intACECount Then
		For Each objACE In objACL
			If ( (UCase(objACE.Trustee) = UCase(sUser)) And ((objACE.AccessMask And EX_FULLMAILBOX_ACCESSMASK) <> 0)) Then
				fFoundFMA = True
				AccessType = objACE.AceType
			End If
		Next
	End If

	If (err.number <> 0) Then
		objfileError.WriteLine("Check FullMailbox permissions Failed : " & sUser)
		objfileError.WriteLine("Error: " & err.Description)
		err.Clear
		fOneError = True
	End If
	Set ObjACE = Nothing
End Function

Function RemoveSendAs (objNTSD, sUser)
	Dim intACECount
	Dim objACE
	Dim fFound
	
	fFound = False
	intACECount = objNTSD.AceCount
	
	If intACECount Then
		For Each objACE In objNTSD
			If ((UCase(objACE.Trustee) = UCase(sUser)) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then
				objNTSD.RemoveAce objACE
				fFound = True
			End If
		Next
	End If

	RemoveSendAs = fFound		
End Function

Function RemoveFullMailboxAccess (objACL, sUser)
	Dim intACECount
	Dim objACE
	Dim fFound
	
	fFound = False
	intACECount = objACL.AceCount
	
	If intACECount Then
		For Each objACE In objACL
			If((0 <> Instr(UCase(objACE.Trustee), UCase(sUser))) And (objACE.AccessMask And EX_FULLMAILBOX_ACCESSMASK) <> 0) Then
				objACE.AccessMask = (objACE.AccessMask Xor EX_FULLMAILBOX_ACCESSMASK)
				fFound = True
			End If
		Next
	End If

	RemoveFullMailboxAccess = fFound		
End Function

Function GetLDAPPathFromLegacyDN (sLegacyDN)
	Dim rsUsers
	Dim sLdapPath
	
	objCommand.CommandText = "<GC://" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(legacyExchangeDN=" & sLegacyDN & ")) ))));adspath;subtree"
	objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE
	objCommand.Properties("Page Size") = 10
	objCommand.Properties("Timeout") = 30 
	objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

	err.Clear	
	Set rsUsers = objCommand.Execute
	If (err.number <> 0) Then
		objfileError.WriteLine("Search for mailbox owners failed, error:" & err.Description)
		fOneError = True
	End If
	
	If (rsUsers.RecordCount = 0) Then
		objfileError.WriteLine("No mailbox owner user accounts found for " & sLegacyDN & " in " & sDomainContainer & ".")
		fOneError = True		
	End If

	If (rsUsers.RecordCount > 1) Then
		objfileError.WriteLine("Multiple mailboxs owner user accounts found for " & sLegacyDN & " in " & sDomainContainer & ".")
		fOneError = True		
	End If

	sLdapPath = Replace(rsUsers.Fields(0).Value, "GC://", "LDAP://")	
	GetLDAPPathFromLegacyDN = sLdapPath
	Set rsUsers = Nothing
End Function

Function CloseImportexportFiles

	objfileError.WriteLine("*******************************************************")
	objfileError.WriteLine("End at " & Date & " " & Time)
	objfileError.WriteLine("*******************************************************")

	objFSO.Close
	objfileError.Close
	objfileOutput.Close
	objfileImport.Close
	
	Set objFSO = Nothing
	Set objfileError = Nothing
	Set objfileOutput = Nothing
	Set objfileImport = Nothing
End Function

Function CreateImportExportFiles
	Dim sErrorsFileName
	Dim sImportFileName
	Dim sOutputFileName

	err.Clear
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	sErrorsFileName = ERROR_FILENAME
	sImportFileName = EMPTYSTRING
	sOutputFileName = EMPTYSTRING

	Select Case cScriptMode
		Case MODE_ADD
			sImportFileName = WScript.Arguments(ARG_INDEX_FILENAME)
			sOutputFileName = OUTPUT_FILENAME
		Case MODE_REMOVE
			sImportFileName = OUTPUT_FILENAME 'Use the output file name as the import file.
			sOutputFileName = EMPTYSTRING	
		Case Else
			DisplaySyntax
	End Select

	Set objfileError = objFSO.OpenTextFile(sErrorsFileName, ForAppending, True, TristateTrue)
	objfileError.WriteLine("*******************************************************")
	objfileError.WriteLine("Start at " & Date & " " & Time)
	objfileError.WriteLine("*******************************************************")

	If (cScriptMode = MODE_REMOVE) Then
		Set objfileImport = objFSO.OpenTextFile(sImportFileName, ForReading, False, TristateTrue)
	Else
		Set objfileImport = objFSO.OpenTextFile(sImportFileName, ForReading, False, TristateFalse)
	End If

	If (sOutputFileName <> EMPTYSTRING) Then
		'Determine whether the output file already exists.
		If (objFSO.FileExists(sOutputFileName)) Then
			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForReading, False, TristateTrue)
			sOneRow = objfileOutput.ReadLine
			'If the user name in the file differs from the parameter, the process cannot continue.
			If ( sOneRow <> sGrantedUser ) Then
				WScript.StdOut.WriteLine("The Domain\User must be the same as " & sOneRow )
				WScript.Quit
			End If
			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForAppending, True, TristateTrue)
		Else
			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForWriting, True, TristateTrue)
			'The first line of the log file is the user who is granted the permissions.
			objfileOutput.WriteLine(sGrantedUser)
		End If
	End If
	
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to open Log file, error:" & err.Description)
		WScript.Quit
	End If
End Function

Function AddAce(dacl, TrusteeName, gAccessMask, gAceType, gAceFlags, gFlags, gObjectType, gInheritedObjectType)
	Dim Ace1
	
	Set Ace1 = CreateObject("AccessControlEntry")
	Ace1.AccessMask = gAccessMask
	Ace1.AceType = gAceType
	Ace1.AceFlags = gAceFlags
	Ace1.Flags = gFlags
	Ace1.Trustee = TrusteeName
	'Determine whether ObjectType has to be set.
	If CStr(gObjectType) <> "0" Then
		Ace1.ObjectType = gObjectType
	End If

	'Determine whether InheritedObjectType has to be set.
	If CStr(gInheritedObjectType) <> "0" Then
		Ace1.InheritedObjectType = gInheritedObjectType
	End If
	dacl.AddAce Ace1

    Set Ace1 = Nothing
End Function

Function DisplaySyntax
	WScript.StdOut.WriteLine("Syntax:")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Grant Full mailbox access and SendAs permission to USER based on IMPORT_FILE:")
	WScript.StdOut.WriteLine("    CSCRIPT " & WScript.ScriptName & " -Add DOMAIN\USER IMPORT_FILE")
	WScript.StdOut.WriteLine("    NOTE: """ & OUTPUT_FILENAME & """ will be created for -Remove option ")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Remove Full mailbox access and SendAs permission based on " & OUTPUT_FILENAME & ":")
	WScript.StdOut.WriteLine("    CSCRIPT """ & WScript.ScriptName & """ -Remove ")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("For all modes, errors are saved to " & ERROR_FILENAME )

	WScript.Quit	
End Function

プロパティ

文書番号: 941018 - 最終更新日: 2011年10月19日 - リビジョン: 9.0
キーワード:?
kbhowto kbinfo kbmt KB941018 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:941018
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com