如何使用 「 Exchange 行事曆更新工具處理日光節約時間

文章翻譯 文章翻譯
文章編號: 941018 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

日光節約時間是一個系統,以設定時鐘繼續進行,日出和日落會發生在之後的小時。結果是多個日光節約在傍晚。許多國家/地區觀察日光節約時間。大部分的國家有他們自己的規則與規定的日光節約時間開始及結束。

日光節約時間 (DST) 的日期可能會變更年年份。Microsoft Outlook 使用者必須更新他們的 Outlook行事曆的 DST 規則變更每一次。上一個] 之間的日期DST 規則和目前的 DST 規則指為這份文件中「 延伸的 DST 週期 」。

本文描述的動作,您列出可用於地址行事曆在 Outlook 中的項目時發生延伸DST 時間。本文也說明您應該採取的動作更新儲存在 Microsoft Exchange Server,根據行事曆項目新的 DST 規則。這份文件中顯示此解決方案涉及Microsoft Exchange 行事曆更新工具 (「 Exchange 工具 」)。

為有關如何準備日光節約時間變更的詳細資訊2007 (DST 2007) 所有受影響的 Microsoft 產品,請造訪下列Microsoft 網站:
http://support.microsoft.com/gp/cp_dst
在 2011,俄羅斯政府採用取消日光節約時間 (DST) 的法律。如需詳細資訊,請造訪下列 Microsoft 網站:
http://support.microsoft.com/gp/cp_dst#tab0
如需在俄羅斯的詳細資訊,請造訪下列 Microsoft 網站:
http://support.microsoft.com/gp/cp_dst/ru#tab0

其他相關資訊

有關 Exchange 工具

之後您安裝的 Windows 中,所有舊的 DST 更新會不正確的 DST 變更期間所發生的約會顯示為一個小時之後的發生。這適用於這兩個循環,單一執行個體約會。因此您必須更新這些約會確定它們隨即出現在 Outlook 中,在 Microsoft Office Outlook Web Access 中,正確在應用程式中,並以共同作業資料物件(CDO)。

Outlook 會提供一種工具,稱為 「 時間 」 區資料更新Microsoft Office Outlook (「 Outlook 工具 」) 工具。此工具可讓使用者若要更新自己的行事曆。

如需有關及時區資料更新工具,請按一下下面的文章編號,檢視在 Microsoft 中知識庫:
931667如何處理在 2007年日光節約時間變更,使用 Microsoft Office Outlook 及時區資料更新工具
Exchange 行事曆更新工具 (「 交換工具 」) 可協助您避免在部署的系統管理員所面臨的問題最常用到的所有使用者,並讓每位使用者執行中的 [Outlook] 工具Outlook 正確工具。

高階說明 Exchange 工具

Exchange 工具是由兩個不同的可執行檔所組成。這些下表說明檔案。
摺疊此表格展開此表格
檔案名稱描述
Msextmz.exe 這個可執行檔中擷取時區正在執行 Exchange Server 的伺服器上的信箱資訊。這可執行檔也會更新指定的清單] 的 [信箱] 行事曆使用者。
Msextmzcfg.exe 這個可執行檔是執行的大部分步驟涉及的組態工具正在更新 Exchange Server 的伺服器。

關於新版本的 Exchange 工具

根據客戶的意見反應,新版本的 Exchange 工具程式在 2007 年 8 月 13 日發行。這份文件指向新版本的Exchange 的工具。如果您執行舊版的 Exchange] 工具,解除安裝,然後再安裝新的版本。

新版本的Exchange 工具包含了下列改進:
  • 時區擷取和行事曆更新處理程序fourfold 加速。
  • 組態工具的使用者介面是多個有效率而容易了解。
  • 更新的會議室和資源的能力組態工具現在是內建的信箱。
  • 更新使用者信箱的能力現在建置成組態工具。
  • 疑難排解文件現在隨附Exchange 工具] 中,而且它被整合的組態工具。
  • 時區解壓縮演算法和錯誤處理功能已獲得改善。
  • 記錄處理程序會更容易使用。

執行 Exchange 工具的風險

當您執行 「 交換 」 工具時,就會發生風險,單一執行個體約會可能無法正確更新。例如,使用者作業系統之後建立的單一執行個體約會更新可能不正確地更新。

若要降低此風險,使用其中一項下列方法:
  • 減少您更新的時間間隔用戶端電腦和您更新信箱的行事曆的時間。
  • 如果組織中的電腦更新了很長的時間前,使用 請只更新週期性會議 在設定進階的設定.

    通常,使用者不會建立單一執行個體約會數個月事先。因此,如果 DST已安裝更新程式之前,大部分的單一執行個體會議數個月該改成延長的 DST 時間所建立使用新的DST 轉換規則。這些會議並不需要更新。
  • 如果您知道的確切日期所有用戶端電腦已更新,使用 作業系統補充程式的日期 在設定進階的設定.如果指定的日期,則單一執行個體Exchange 會不會更新該日期之後所建立的約會工具。
附註 如果您的用戶端上執行 Outlook 的工具] 或 [Exchange] 工具正在執行 Windows Vista 中,與您對信箱執行工具的電腦當主時區是紐西蘭標準時間時,您必須執行此工具2008 年 1 月 1 日晚於或等於第二次。如需詳細資訊,請參閱 「 已知發出 」 一節。

若要更新信箱選項

下表列出您可以使用更新的五個選項若要使用的 DST 2007 時區規則的使用者信箱。
摺疊此表格展開此表格
選項專業人員缺點
分配給每個使用者,Outlook 工具和指示若要更新自己的信箱使用者。 這個選項可以避免風險,與執行 Exchange 工具有關聯。 很難保證所有的使用者將會正確,並在盡快執行 Outlook 工具方式。

Outlook 的使用者將無法執行Outlook 的工具。

您必須努力其他教育減少使用者的混淆。
針對所有受影響的使用者與伺服器中執行 Exchange 工具。 此選項為使用者提供高效率的經驗。 相關的 [Exchange] 工具中,為有風險「 執行中的 [Exchange] 工具的風險 」 一節所述。
執行 Exchange] 工具,以更新唯一的週期性約會。讓使用者藉由更新自己的信箱中的單一執行個體約會Outlook 的工具。 較少的單一執行個體約會的風險更新錯誤。 執行 Outlook 工具的缺點是加上執行 Exchange 工具的缺點。
執行 Exchange 工具都 Outlook 工具。要求使用者檢查其行事曆,並視 re-book 約會。 這選項可以避免執行 Exchange 工具相關聯的風險。 除非所有的使用者 re-book 所有受影響的約會,一些行事曆項目時,將會一小時關閉延長的 DST 時間。

您必須進行額外的教學工作,以降低對使用者的混淆。
分配給每個使用者,Outlook 工具和指示若要更新自己的信箱使用者。然後,使用的時區擷取模式Exchange 會執行工具,以判斷使用者是否正在執行 Outlook 工具。

如果使用者沒有執行 Outlook 工具,系統管理員可以執行 Exchange 的工具。
這個選項不會降低風險的使用者執行該工具在即時的方式,因此可以避免相關聯的風險執行 Exchange 工具。 如果這是不選擇使用者執行 Microsoft Office Outlook 2007年。

如何安裝 Exchange 工具

Exchange 行事曆更新工具是可供下載自動解壓縮的可執行檔 (Msextmz.exe) 的表單。這個工具位於從 「 Microsoft 下載中心 」 下載:

摺疊此圖像展開此圖像
下載
下載Exchange 行事曆更新工具套件現在。

若要幫助您建立虛擬機器安裝並使用 [Exchange] 工具。虛擬機器基於 MicrosoftWindows Server 2003,Outlook 2007,Microsoft Office Excel 2007 中 MicrosoftOffice Word 2007。在這兩種 Microsoft 虛擬 PC 2004 中運作的虛擬機器在 Microsoft 虛擬伺服器 2005 R2。

如需詳細資訊關於虛擬機器以獲得 Exchange 行事曆更新工具,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文:
933185虛擬機器是可用來協助您部署 Exchange 組織中的日光節約時間 2007年行事曆更新
如需有關如何下載 Microsoft 支援服務檔案中,按一下下列文件編號,檢視在 Microsoft 中知識庫:
119591 如何從線上服務取得 Microsoft 的支援檔案
Microsoft 掃描這個檔案有無病毒。Microsoft 會使用最目前的日期是可用的病毒偵測軟體的檔案公佈。檔案會儲存在安全的伺服器,以避免任何未經授權的更改檔案。

Exchange 工具所支援的語言

Exchange 工具是僅提供英文版本。工具會執行只在英文 (美國) 的電腦。

Exchange Server 與 Exchange 工具相容的版本

Exchange 工具可以更新下列版本的信箱Exchange Server:
  • Microsoft Exchange Server 2007年企業版
  • Microsoft Exchange Server 2007年標準版
  • Microsoft Exchange Server 2003年企業版
  • Microsoft Exchange Server 2003年標準版
  • Microsoft Exchange 2000 Server 企業版
  • Microsoft Exchange 2000 Server 標準版

Exchange 工具所支援的作業系統

在下列的 32 位元版本上執行 Exchange 工具作業系統:
  • Microsoft Windows Server 2003
  • Microsoft XP Windows
  • Windows Vista

該怎麼做才能執行 Exchange 工具

安裝更新

在執行 Exchange 工具之前,請確定該用戶端和伺服器電腦可以正確更新。要執行這項操作,請在安裝 Windows DST 更新用戶端和伺服器上。 如需詳細資訊資訊,請按一下下面的文章編號,檢視中的文件Microsoft 知識庫 」:
9427632007 年 12 月 Microsoft Windows 作業系統的累積時區更新

如果您正在執行 Microsoft Exchange Server2003 Service Pack 2 (SP2),安裝一或多個下列的更新,適合您的組織:
  • 更新 911829
  • 更新 924334
如需有關這些更新的詳細資訊,請按一下下面的文件編號若要檢視 「 Microsoft 知識庫 」 中的文的文件:
911829當您嘗試執行任何編輯的工作,或您必須按一下以啟用 Outlook Web Access 的撰寫圖文框時,收到錯誤訊息
924334 撰寫郵件] 表單會停止回應 Exchange Server 2003年中安裝 Internet Explorer 7.0,Outlook Web Access 用戶端上的 S/MIME 控制項之後
如果使用者在耶路薩冷,中央巴西] 或 E.南美國的時區,請先閱讀中的指引下列 「 Microsoft 知識庫 」 文件:

943390 重定基某些 Outlook 行事曆項目被底錯誤當您使用 Outlook 及時區資料更新工具來調整為特定時區的日光節約時間變更

確認系統需求

您必須執行 Exchange 工具只能在電腦上的下列情況皆成立:
  • 電腦有 Microsoft Office Outlook 2003 Service Pack2 (SP2) 或 Microsoft Office Outlook 2007 安裝。
  • 電腦有 Outlook 時區資料工具安裝。
  • Microsoft。NET Framework 2.0 版上已安裝用戶端電腦。
您不能執行的電腦上執行 Exchange 工具Exchange Server] 或 [Exchange 系統管理工具] 中。如果您嘗試安裝執行 Exchange Server 或 Exchange 的電腦上的 [Exchange] 工具系統管理工具] 中,您會收到下列錯誤訊息:
無法與安裝 Microsoft Exchange 行事曆更新工具Microsoft Exchange。

請確認權限,而且其他使用者的需求

請確認下列情況皆成立:
  • 管理每個 Exchange 資訊儲存庫權限會更新伺服器的郵件資料庫 (MDB)。
  • 傳送 」 權限之所有信箱更新。
  • 針對所有信箱的完整信箱存取權限更新。
  • 本機系統管理員權限授與電腦上執行 Exchange 工具。

有關 「 授與信箱權限 」 指令碼

您可以使用範例 GrantMailboxPermission.vbs 指令碼來授與網域使用者完整信箱存取 」 或 「 傳送 」 權限給所有信箱。

此指令碼可以執行只能由 Exchange Server在執行 Exchange 2000 伺服器或 Exchange 的電腦上的系統管理員伺服器 2003。無法執行 Exchange 的電腦上執行此指令碼伺服器 2007。不過,您可以使用 Exchange 管理命令介面來授與必要的權限。

提供.vbs 指令碼的程式碼〈 參考 〉 一節。下表描述此兩種模式指令碼執行。
摺疊此表格展開此表格
模式命令描述
新增 CScript GrantMailboxPermission.vbs –add Domain_Name \ User_Name File_Name 這個命令會授與 Domain_Name \ User_Name 使用者完整信箱存取和傳送 」 權限給使用者信箱所列的輸入檔案。

輸入的檔必須包含傳統的文字檔使用者信箱的網域名稱。這些名稱必須以歸位字元分隔傳回 + 行送紙 (具有以 CRLF)。

指令碼會產生GrantMailboxPermission.log 檔案。這個檔案是信箱的記錄,已處理。記錄檔的第一行是 Domain_Name \ User_Name 授與使用者存取。請勿刪除此檔案。這個檔案用在移除模式下。

如果明確 「 拒絕 」 的存取被指派給使用者時,指令碼資訊記錄在檔名為"GrantMailboxPermission.err"。的指令碼不會授與或變更使用權限。

如果使用者是組件已經指定安全性群組的 「 拒絕 」 存取權,授與指令碼完整信箱存取 」 和 「 傳送 」 權限。不過,使用者將無法若要登入信箱。所有的錯誤將會記錄在GrantMailboxPermission.err 檔案。
移除 CScript GrantMailboxPermission.vbs –remove此命令可移除完整信箱存取] 與 [傳送為GrantMailboxPermission.log 中所列的信箱的權限從檔案 Domain_Name \ User_Name 使用者。的 Domain_Name \ User_Name 指定使用者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%的範圍。)

此外,系統管理員可以指定只有一個更新日期。在對應的時區中建立的會議特定更新,並以特定設定的區域必須更新的時間。

會議室的含意是,只會更新會議房間位於特定的時區。

使用者定義信箱是,如果 SuppressExchange 設定或 SuppressAll 未指定設定,只有使用者的信箱,隸屬於特定的時間會更新區域。
此設定適用於所有信箱,所有的會議室,與所有使用者的行事曆。
SuppressExchangeMaxDepth這些設定會使所有的約會受影響的使用者的行事曆更新不論 DST 變更使用者是否組合管理這些行事曆項目。

如果使用者是召集人行事曆項目、 更新並不會傳送至出席者有 Exchange 信箱。更新傳送至出席者不需要交換信箱。

MaxDepth 設定指定的層級為了判斷哪一個出席者的通訊群組清單展開的有 Exchange 信箱和的出席者不是這樣。
如果,使用此設定您不希望 Exchange 使用者,接收召集人的會議更新受 DST 段的會議。

SuppressExchange 設定值是優於 SuppressAll 如果組織有非 Exchange 的設定伺服器行事曆系統] 和 [如果排程會議,以包含出席者,是組織外部。
傳送會議更新時,除了非 Exchange 使用者。因此,以便確定會複製的相同的會議會更新所有可能的出席者,必須在組織中的每個信箱更新。

這種情況可能會大幅增加的數目必須更新的信箱。因此,可能會處理時間增加。

巢狀通訊群組清單時,會在 [出席者很昂貴的程序,來判斷會議,出席者] 清單中,判斷這些出席者是否 Exchange 信箱。如果您指定此設定和設定的高值 MaxDepth 參數,極大的負擔可能放在網域上控制站。
這項設定只適用於使用者信箱。
SuppressAll這個設定會使所有在使用者的行事曆中的約會受 DST 變更成不論使用者是否這些行事曆] 的組合管理更新項目。

如果使用者是召集人行事曆項目,已更新不傳送給出席者。
使用此設定,如果不想讓出席者取得受影響的會議召集人的會議更新長的 DST 時間。傳送會議更新。因此,若要讓確定份相同的會議會更新所有可能的出席者,必須更新組織中的每個信箱。

這種情況可能大幅增加必須更新的信箱數目。因此,您可能會增加處理時間。

出席者不是這樣有 Exchange 信箱執行不會收到更新。可能不是他們的約會根據使用者所執行的電子郵件系統,以及根據更新他們的系統管理員取得動作。
此設定只適用於使用者信箱。

更新的會議室和資源信箱

您必須更新的會議室和資源信箱,以避免預約衝突。若要執行這項操作,請遵循下列步驟:
  1. 在上 指定資源和會議的會議室行事曆 頁面中,鍵入或貼上的會議室的別名清單在您的組織。按一下 [ 解決 若要驗證的別名然後按一下 下一步.
  2. 在上 解決資源的時區和會議空間行事曆 頁面上,「 工具提示您以手動方式如果會議空間並不會,指定一間會議室的時區有一個時區。做這樣的處理,然後按一下 下一步.
  3. [提醒] 頁面會隨即顯示提醒您,此工具即將更新的行事曆。按一下 [ 下一步.
  4. 請注意,狀態列上,連結至輸出記錄,並即時顯示工具的輸出會顯示。按一下 [下一步.

    如果發生錯誤,連結疑難排解文件會顯示在此頁面的底部。

對使用者信箱的行事曆

若要執行這項操作,請遵循下列步驟:
  1. 在上 更新使用者信箱的設定行事曆 頁面上,設定更新的設定。

    如果您不指定 SuppressExchangeSuppressAll 進階設定],選取的時區受 DST。否則,請選取所有的時區。

    按一下 [下一步.
  2. [提醒] 頁面會隨即顯示提醒您,此工具即將更新的行事曆。按一下 [ 下一步.
  3. 請注意,狀態列上,連結至輸出記錄,並即時顯示工具的輸出會顯示。更新之後完成時,請按一下 下一步.

    如果發生錯誤,疑難排解文件的連結會顯示在下方頁面。
  4. 按一下 [ 完成.

交換工具記錄檔案和子目錄

記錄檔

「 交換 」 工具會建立下列記錄檔中的安裝目錄:
  • Output.txt

    這個檔案包含所有使用者信箱的清單,擷取與他們的時區資訊。
  • TimeZoneExtraction.log

    這個記錄檔包含時區合併的的輸出所有伺服器擷取程序。
  • ResourceUpdate.log

    這個記錄檔包含的更新程序的輸出會議室和資源信箱。
  • UserUpdate.log

    這個記錄檔包含使用者的合併的輸出信箱的所有伺服器的更新程序。
  • CalendarScan.log

    這個記錄檔中包含合併的行事曆輸出掃描所有伺服器的程序。
  • ConflictUsers.txt

    這個記錄檔包含一份有衝突的使用者時區。例如,使用者的信箱內容表示它們屬於多個時區。
  • NonExistent.txt

    這個記錄檔中包含之使用者不的任何時區清單資訊。

子目錄

Exchange 工具建立中的下列子目錄安裝目錄:
  • 資源

    這是更新處理程序的工作子目錄會議室和資源信箱。這個目錄包含下列檔案:
    • Msextmz.log

      這是 Exchange 工具的輸出檔更新處理程序。
    • Errors.txt

      這個檔案包含信箱的清單。
    • Processed.txt

      這個檔案包含的信箱的清單成功更新。
    附註 所有的工作子目錄包含這些檔案。

    的資源子目錄也會包含下列子目錄:
    • 記錄檔

      這個子目錄包含每個信箱的更新記錄檔已成功更新的功能。每個更新記錄檔應該包含的清單已更新的會議。
  • Server_Name

    沒有為每個伺服器的一個子目錄在其上所執行的時區擷取程序] 或 [行事曆更新。這些子目錄包含下列子目錄:
    • CalendarScan

      這是行事曆掃描工作子目錄處理程序。
    • 擷取

      這是工作子目錄時區擷取程序。
    • 更新

      這是使用者信箱的 [工作] 子目錄更新處理程序。它包含下列子目錄:
      • 記錄檔

        這個子目錄包含每個信箱的更新記錄檔已成功更新的功能。每個更新記錄檔應該包含的清單已更新的會議。

要執行的動作之後執行 Exchange 工具

當您完成所有的 Exchange 針對執行 Exchange 工具在您環境中,伺服器會套用適當的 Exchange Server DST 更新。下列清單依 Exchange Server 版本及服務套件層級。安裝您的 Exchange Server 中版本的更新順序。

Exchange Server 2007
940006 更新彙總套件 4 的 [說明],如 Exchange Server 2007
包含 Exchange Server 2007年更新彙總套件 4下列的 DST 修正程式:
  • 937656 日光節約時間 (DST) 2007年中開始紐西蘭中之後,遇到 Exchange 2007 的 Outlook Web Access 中的問題
  • 932561 到另一個在 Exchange 組織傳送,使用 Exchange 2007 的約會可能不正確的一小時一個組織是否位於西部澳洲時區
Exchange Server 2003 SP2
926666 日光節約時間變更為 Exchange 2003 Service Pack 2 2007年中更新
931915 更新紐芬蘭在 2007 年的日光節約時間變更為 Exchange Server 2003 Service Pack 2
929895 當公司是西歐澳洲時區的一個小時,會在不同的 Exchange Server 組織之間傳送的約會可能會不正確
937653 在 2007 年日光節約時期之內紐西蘭變更後遭遇到 Exchange Server 2003年中的一或多個問題
Exchange Server 2003 SP1
940123 您遇到的問題,在 Exchange 2003 Service Pack 1 後日光節約時間 (DST) 2007年中啟動在紐西蘭

已知的問題

  • 在 Outlook Web Access 中建立的週期性會議不會更新 「 Exchange 工具

    如果您安裝 Exchange Server 更新Exchange 伺服器在更新信箱,週期性的會議之前在 Outlook Web Access 中建立 Exchange 工具不會更新。

    若要解決這個問題,請移除 Exchange Server 更新,請執行交換工具,然後再重新交換上的安裝 Exchange Server 更新伺服器。
  • 在執行 Exchange 工具之後,必須重新啟動 Exchange 2007

    若要正確地顯示行事曆項目,您必須重新啟動Exchange 服務之後執行 Outlook Web Access 中的 [Exchange] 工具Exchange 2007。
  • 您無法安裝 Exchange 工具

    如果未成功安裝 Exchange 工具其中一個下列的登錄機碼存在:
    • HKEY_CLASS_ROOT\Outlook.Application.9
    • HKEY_CLASS_ROOT\Outlook.Application.10
    在這個案例中,您會收到下列錯誤訊息當您嘗試安裝 「 交換 」 工具:
    Exchange Server行事曆重定基底工具無法安裝此版本的 MicrosoftOutlook。
    若要解決這個問題,請刪除這些登錄機碼,安裝 [Exchange] 工具,然後還原登錄索引鍵。

    重要 這個區段、 方法或任務包含會告訴您作法的步驟,修改登錄。但是,嚴重的問題可能進行修改登錄不正確。因此,請確定您遵循這些步驟小心。為加強保護,請在修改前備份登錄。然後,您可以在發生問題時還原登錄。如需詳細資訊有關如何備份和還原登錄,請按一下下面的文件檢視 「 Microsoft 知識庫 」 中的數字:
    322756 如何備份和還原在 Windows 登錄
  • 沒有可以處理每個伺服器的信箱數目限制

    在使用者清單模式和時區擷取模式,Msextmz.exe 可以處理 65535 只在伺服器上的信箱。如果伺服器有無法處理超過 65535 個信箱,某些信箱。
  • 無法更新公用資料夾行事曆

    Exchange 工具不會更新公用資料夾行事曆。如需有關如何更新公用資料夾行事曆的資訊,請參閱Outlook 工具的文件。
  • 您可以在相同的環境中執行 Outlook 的工具] 和 [Exchange] 工具

    如果您開啟信箱時,Exchange 工具已經更新 Outlook] 工具,或從縱向變成橫向,您遇到沒有側邊效果。不過,如果您執行 「 交換 」 工具時,沒有必要的使用者分別執行 Outlook 工具。
  • 原預期之後顯示非會議備忘提醒

    非會議提醒會更新的信箱如果 Outlook 不會有連線到信箱,不會更新 [Exchange] 工具在連線模式。在此情況下,提醒出現一小時晚於預期的。

    如果 Outlook 永遠不會有連線在連線模式下,您必須調整不正確的行事曆約會提醒,Outlook 工具尋找。此外,[提醒] 搜尋資料夾不存在的信箱中。因此,工具不會更新的電子郵件、 連絡人或其他提醒。

    例如,工具不會更新的電子郵件項目提醒待在將來的時間。這個工具也不會更新有提醒的工作項目上的提醒。
  • 您會收到錯誤訊息: 「 無法安裝,因為偵測到先前版本的 'Microsoft Exchange 行事曆更新工具'。請解除安裝它們,然後重新執行這個安裝程式 」

    如果您先前安裝 Exchange 行事曆更新工具 1.0 版中,您必須解除安裝此版本安裝 Exchange 前行事曆更新工具版本 2.0。

    Exchange 行事曆更新工具1.0 版和自我解壓縮的可執行檔包含散佈兩個.msi 套件 (Msextmz.msi 和 Msextmzcfg.msi)。您必須同時解除安裝在安裝 Exchange 工具 2.0 版之前的封裝。

    如果您當您安裝 2.0 版的 [Exchange] 工具,還是發生問題請重新安裝,然後解除安裝 1.0 版的 [Exchange] 工具。執行這透過.msi 套件,而不是使用 新增或移除程式 在 [控制台] 中的功能。然後,重新啟動電腦,並接著,請安裝 2.0 版的 [Exchange] 工具。

    如果此程序無法運作,直接從.msi 套件解壓縮二進位碼檔案。
  • 當您執行的 Outlook 或 Exchange 的 「 更新 」 工具時,約會為關閉的一小時信箱家用時區所在紐西蘭標準時間

    下列情況時,就會發生這個問題true:
    • 在執行 Outlook] 或 [Exchange] 更新工具正在執行 Windows Vista 的電腦。
    • 有的信箱的主時區更新是紐西蘭標準時間。
    若要解決這個問題,您必須執行 Outlook 或針對第二次,或在年 1 月後的信箱的 Exchange 更新工具1,2008年。

    這是因為 Windows Vista 處理時區執行 Windows 其他版本的方式不同的資訊。如果您沒有執行Outlook 或 Exchange 更新工具一次開啟] 或 [2008 年 1 月 1 日之後, 所有在第二個事件中,DST 的約會將會關閉相差一小時。第二個 DST事件包括從 2008 年 3 月 16 日到 2008 年 4 月 6 日的日期。

    如果您不這樣做要等到 2008 年 1 月 1 日更新第二個 DST 的約會事件,您可以從電腦執行 Outlook 或 Exchange 更新工具執行 Windows XP 或 Windows Server 2003。
  • 以 MM/DD/YYYY 格式的日期變更為 M/DD/YYYY 格式

    您設定 作業系統補充程式的日期 在 Exchange 中的選項行事曆更新工具。當您這樣做時,Exchange 行事曆更新工具無法正確運作。日期格式 MM/DD/YYYY 變更為 M/DD/YYYY,就會發生這個問題。

    此外,類似的錯誤訊息錯誤記錄檔會記錄下列錯誤訊息:
    [28/02/2008年 7: 10: 21上午] [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/MM/YYYY 格式應該是這個日期。

    若要解決這個問題,請不要使用 作業系統補充程式日期 選項。

?考

「 授與信箱權限 」 指令碼

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日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Exchange Server 2007 Enterprise Edition
  • Microsoft Exchange Server 2007 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange 2000 Server Standard Edition
關鍵字:?
kbhowto kbinfo kbmt KB941018 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:941018
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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