您目前已離線,請等候您的網際網路重新連線

使用 Exchange Server 位址日光節約時間變更為 「 Exchange 行事曆更新工具

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:930879
重要此 Microsoft 知識庫 」 文件所述的更新已經由 Microsoft 知識庫文件 941018 中所述的更新取代。若要確定 Windows 會有最新的時區資料,安裝在微軟知識庫文件 941018 中所描述的更新。您沒有解除安裝 Microsoft 知識庫文件 941018 中安裝所描述的更新程式之前所述此 Microsoft 知識庫 」 文件中的更新。

如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
941018 如何使用 「 Exchange 行事曆更新工具的地址日光節約時間
簡介
日光節約時間是一種預先設定時鐘,這樣日出和日落發生在稍後的小時。效果在傍晚是額外的日光節約。雖然大部分有其自己的規則及註冊來取得何時會開始及結束,許多國家/地區會觀察日光節約時間。日光節約時間 (亦稱為 DST) 的日期可能會變更每年,且使用者必須更新他們的 Microsoft Office Outlook 行事曆每次 DST 的法律或規則變更。先前的 DST 規則與目前的 DST 規則之間的日期被所謂的本文中 「 DST 延伸時段。"

本文著重於位址行事曆的項目在 Microsoft Outlook 在延長的 DST 時間期間發生,您可以採取的動作。

如需有關如何準備日光節約時間於 2007 (DST 2007) 中所有受影響的 Microsoft 產品的詳細資訊,請造訪下列 Microsoft 網站: 本文著重於更新會儲存在 Microsoft Exchange Server 上,根據新的 DST 規則的行事曆項目應採取的動作。本文提供此解決方案涉及 Exchange 行事曆更新工具 (「 Exchange 工具 」)。Exchange 工具會依賴的 Microsoft Office Outlook (「 Outlook 工具 」) 的時區資料更新工具。
如需有關 Outlook 工具的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
931667 如何處理在 2007年日光節約時間變更,藉由 Microsoft Office Outlook 時區資料更新工具

有關 Exchange 工具

Microsoft windows 安裝 DST 更新後,舊的 DST 變更期間發生的所有約會將無法正確都顯示為一個小時之後發生。這是週期性和單一執行個體的約會,則為 true。必須更新這些約會,使它們將會正確顯示在 Outlook 中,Outlook Web Access 和 CDO 基礎的應用程式。

Outlook 提供的 Microsoft Office Outlook 稱為時區資料更新工具的工具。此工具可讓使用者更新自己的行事曆。

注意在 Microsoft Office Outlook 2007 中,是內建的時區資料更新工具。不過,我們建議您使用獨立版本的時區資料更新工具。
931667 如何處理在 2007年日光節約時間變更,藉由 Microsoft Office Outlook 時區資料更新工具
Exchange 行事曆更新工具 (「 Exchange 工具 」) 可讓您避免牽涉到當您部署 Outlook 工具廣泛的所有使用者的挑戰,並讓您確認每一位使用者正確地執行此工具。

高階說明 Exchange 工具

Exchange 工具是由兩個不同的可執行檔所組成。下表說明這些檔案。
檔案名稱描述
Msextmz.exe這個可執行的程式正在執行 Exchange Server 的伺服器上的信箱從擷取時區資訊。這個可執行的程式也會藉由叫用 Outlook 工具,針對每個指定的使用者更新指定的使用者清單的信箱行事曆。
Msextmzcfg.exe這個可執行的程式是在更新 Exchange Server 伺服器執行的大部分步驟所牽涉的組態工具。

第 2 版 Exchange 工具

2007 年 2 月 21 日發行第 2 版的 Exchange 行事曆更新工具。這篇文章是指 Exchange 工具的第 2 版。如果您執行 Exchange 工具第 1 版,將它解除安裝,並安裝第 2 版。第 2 版 Exchange 工具做了下列改進:
  • 在更新模式下執行工具時,兩次第 1 版的速度在版本 2 的效能。
  • 使用者介面已獲得改善。
  • 記憶體遺漏會固定經常重新啟動該要求的用戶端電腦。
  • 改良式的演算法也包含將解壓縮的時區對應到作業系統的時區。

風險與限制的執行 Exchange 工具

有兩個執行 Exchange 工具之前必須考量的問題。下表列出這些問題,對 IT 基礎結構,以及使用者和他們的緩和策略的潛在影響。
風險 效果緩和措施
有很多會議更新。伺服器和網路的效能都降低了。決定的伺服器和網路效能的影響可能是藉由先更新小型批次的使用者。破壞性的負載時,請在離峰時間,或在專用的維護時段執行工具。
此工具的時間太長,無法執行。MSXTMZ.exe 是單一執行緒。如果您執行這個檔案在更新模式下,針對數個千分位使用者在同一時間,Exchange 工具可能要花許多數小時或可能是工作日完成。 若要加速更新程序,針對所有信箱,分成使用者批次,並使用一部電腦上的 MSXTMZ.exe 的個別執行個體,以更新每個批次的使用者。

用於更新信箱選項

下表列出可以用來更新使用者的信箱,以使用 DST 2007 時區規則的五個選項。
選項專業人員優缺點
分配給每個使用者的 [Outlook] 工具,然後指示使用者更新自己的信箱。這個選項可以避免風險和執行 Exchange 工具的限制。很難保證所有的使用者將會執行 Outlook 工具正確且即時的方式。沒有 Outlook 的使用者將無法執行 Outlook 工具。需要額外的教育工作,才能減少使用者的混淆。
針對所有受影響的使用者與伺服器執行 Exchange 的工具。此選項為使用者提供有效率的經驗。有相關聯執行 Exchange] 工具中,先前的表格中所述的問題。
執行 Exchange 工具,並更新僅週期性約會。可讓使用者藉由使用 Outlook 工具更新自己的信箱中的單一執行個體約會。沒有相關的更新錯誤的單一執行個體約會的風險較低。執行 Outlook 工具的缺點被配合執行 Exchange 工具的缺點。
執行 Exchange 工具都 Outlook 工具。要求使用者檢查他們的行事曆和重新通訊錄的約會,視需要。此選項可避免執行 Exchange 工具的問題。除非所有的使用者重新通訊錄的所有受影響的約會,一些行事曆項目為一小時關閉延伸 DST 期間。需要額外的教育工作,才能減少使用者的混淆。
分配給每個使用者的 [Outlook] 工具,然後指示使用者更新自己的信箱。然後,使用時區擷取模式的 Exchange 工具來判斷使用者所執行的 Outlook 工具。如果使用者沒有執行 Outlook 工具,系統管理員可以執行 Exchange 的工具。此選項可降低使用者未及時,執行此工具的風險,並可避免執行 Exchange 工具的問題。如果使用者執行的 Outlook 2007,這是不選項。

如何安裝 Exchange 工具

有自我解壓縮的可執行檔 Msextmz.exe 的表單都提供 [Exchange 行事曆更新工具。

安裝完成後,安裝目錄中的檔案應該包含下列檔案:
  • Msextmz.exe
  • Msextmzcfg.exe
  • Msextmz.ini

    這個檔案是主要的.ini filethat 文件由 Msextmz.exe 的所有參數。
  • Msextmzcfg.xml

    這個檔案是對應至 operatingsystem 時區的 Outlook,CDO,Outlook Web Access 時區的時區 mappingfile。
如需有關 Exchange 行事曆更新工具的最新版本的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
941018 如何使用 「 Exchange 行事曆更新工具的地址日光節約時間

Exchange 工具所支援的語言

Exchange 工具是僅提供英文版本。此工具將只有電腦上執行英文 (美國)。

與 Exchange 工具相容的版本的 Exchange Server

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

Exchange 工具所支援的作業系統

Exchange 工具將在下列作業系統上執行:
  • Microsoft Windows Server 2003
  • Microsoft Windows XP
  • Microsoft Windows 2000
不支援 Windows Vista。

執行 Exchange 工具 」 之前,該怎麼辦

安裝更新

執行 Exchange 工具之前,請確定用戶端和伺服器的電腦已經正確地更新下列更新:
  1. 在用戶端和伺服器的電腦上安裝 Windows 日光節約時間更新。 如需有關如何更新的電腦執行 Windows 作業系統軟體的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    942763 2007 年 12 月 Microsoft Windows 作業系統的累積時區更新
  2. 對於 Exchange 2003 SP2 安裝與組織有關的下列更新:
    • 911829 當您嘗試執行任何編輯的工作,或您必須按一下以啟用 Outlook Web Access 的撰寫圖文框時,收到錯誤訊息
    • 924334 撰寫郵件表單會停止回應在 Exchange Server 2003年中安裝 Internet Explorer 7.0 和 Outlook Web Access 用戶端上的 S/MIME 控制項之後
    注意步驟 1 相同的時間,就可以完成此步驟。

確認系統需求

必須有 Microsoft Office Outlook 2003年的電腦上執行 Exchange 工具或 Microsoft Office Outlook 2007年安裝,而且已安裝的 Outlook 時區資料工具。此外,Microsoft.NET Framework 2.0 版必須安裝在用戶端電腦上。

Outlook 和 Microsoft Office Outlook 區域資料更新工具不是 Exchange 工具下載套件的一部分。他們必須分開安裝。

附註請勿混淆 Outlook 工具安裝程式套件的實際 Outlook 工具可執行檔也稱為 Tzmove.exe 與名為 Tzmove.exe。

若要成功地執行 Exchange 的工具,電腦不能 PickLogonProfile 登錄值設定。此外,此登錄值必須設為 0。如果要判斷此登錄值是否存在,請依照下列步驟執行。

重要這個章節、 方法或工作包含修改登錄的步驟。不過,如果您不當修改登錄,可能會發生嚴重的問題。因此,請務必小心執行這些步驟。為加強保護,請在修改前備份登錄。然後,您可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
322756 如何備份及還原 Windows 中的登錄
  1. 按一下 [開始],按一下 [執行] 型別 regedit然後按一下[確定]
  2. 展開下列子機碼:
    HKEY_CURRENT_USER\Software\Microsoft\Exchange\client\options\
  3. 按一下 [選項],然後決定 [whetherthe PickLogonProfile值存在。如果PickLogonProfile值存在,且設定為 1,將設定值若要 0。若要執行這項操作,請依照下列步驟執行:
    1. PickLogonProfile,以滑鼠右鍵按一下,然後按一下 [修改]
    2. 在 [數值資料] 方塊中,輸入 0然後按一下[確定]
Exchange 工具無法在執行 Exchange Server 或 Exchange 系統管理工具的電腦上執行。如果您嘗試執行的 Exchange Server 或 Exchange 系統管理工具的電腦上安裝 Exchange 工具,您會收到下列錯誤訊息:
無法與 Microsoft Exchange 安裝 Microsoft Exchange 行事曆更新工具。

如何以手動方式設定及執行 Msextmz.exe

設定 Msextmz.ini 檔案

若要正確執行的 Msextmz.exe 必須正確設定 Msextmz.ini 檔案。我們建議您先仔細閱讀 Msextmz.ini 檔案中的註解之前修改 Msextmz.ini 檔案。

指定的 Msextmz.exe 執行模式

Msextmz.exe 會在兩種模式中執行。若要指定執行模式,特定的參數必須在 Msextmz.ini 檔案中設定。下列清單說明三種模式,並說明如何在 Msextmz.ini 檔案中設定的模式。
  • 時區擷取

    在此模式中,Msextmz.exe 會擷取時區 informationfrom 每個信箱藉由讀取一組的 MAPI 屬性。

    Msextmz.execan 會檢查使用者在 user'scalendar 中組織,然後再試著判斷使用者的時區的週期性約會。不過,thisoption 是大量的資源。因此,根據預設,這個選項是 notenabled。若要啟用此選項,請在 Msextmz.ini 檔案中設定ReadCalendarTimezones參數。

    Msextmz.exe recordsthe 時區資訊輸出檔案,包含 listof 信箱中每個使用者的舊版 DNs。每個信箱的傳統 DN 有下列幾種時區值:
    • Outlook Web Access 時區
    • CDO 時區
    • Outlook 的時區
    • 週期性會議時區
    檔案的格式會使用下列格式:
    User_DN<\TAB></\TAB>CDO_Time_Zone<\TAB></\TAB>Outlook 網頁 Access_Time_Zone<\TAB></\TAB>Outlook_Time_Zone<\TAB></\TAB>Recurring_Meeting_Time_Zone<\CRLF></\CRLF>
    如果 Msextmz.exe 不能擷取任何時區四種類型的時區資訊,請在 errorfile 中會記錄信箱的傳統 DN。

    若要將使用者對應到只有一個時區,您必須至 Microsoft Excel 中匯入 theoutput 檔案。在 Excel 中,篩選依據的時區的 toone 的使用者清單。您所使用的時區是根據您的環境而定。

    例如,如果大部分的使用者使用 BlackBerry 裝置 Web 存取 Exchange 5.5Outlook, 或其他 CDO 為基礎的解決方案,篩選由 CDO 時區清單。如果大部分的使用者使用 Exchange Outlook Web Access,篩選由 OutlookWeb 存取時間區域清單。如果大部分的使用者不適合在這些案例的其中一個,來篩選清單的週期性會議時區。

    若要執行工具 inTime 區域擷取模式,請依下列方式設定的.ini 檔案名稱:
    • 將指令行參數取消。
    • 設定 OutputFile 參數。
    • 設定 ErrorFile 參數。
    • 設定 ServerDN 參數。
    • 設定設定檔參數。
    • 設定記錄檔參數。
    • ExportTimezones 將參數設定為 1。
    • 標記為註解其餘的.ini 檔案中的參數。
  • 更新

    在此模式中,Msextmz.exe 會更新指定輸入檔中的所有信箱 thatare。在 followingformat 中應該輸入的檔案:
    User_DN<\TAB></\TAB>Server_Friendly_Name<\TAB></\TAB>OS_Time Zone_Registry_Key<\CRLF></\CRLF>
    只有一個執行個體的 Msextmz.exe 可以在一部用戶端上執行。However,Msextmz.exe 可以在多個用戶端上執行一次。

    要在此模式下的 runMsextmz.exe,您必須設定 Msextmz.ini 檔案,如下所示:
    • 請確定命令行參數備註,而且指向 Tzmove.exe 的正確位置。
    • 設定 InputFile 參數。
    • 標記為註解 OutputFile 參數。
    • 設定 ErrorFile 參數。
    • 設定 ServerDN 參數。
    • 設定記錄檔參數。
    • 設定 LogDirectory 參數。
    • 標記為註解 ExportTimezones 參數。
    • 取消註解剩餘的參數。
    在更新模式下,Msextmz.exe 可以接受輸入的檔包含不同的 Exchangeservers 上的使用者。.Ini 設定會要求您提供的 Exchangeserver DN。在此情況下,您只需要在 Exchange 組織中指定的 Exchangeserver 伺服器 DN。

    若要更新的週期性約會,configurethe 命令列參數具有下列值:
    tzmove.exe /q /onlyrecurring
    若要更新週期性和單一執行個體約會,使用 「 預設命令列的值。

設定為 Msextmz.exe 的權限

執行 Msextmz.exe 所需的使用權限需視使用的執行模式而定。下表列出所需的每個模式中執行的權限。
執行模式權限
時區擷取Exchange 只檢視系統管理員
正在執行 Msextmz.exe 的電腦的本機系統管理員
更新網域使用者擁有的所有信箱的完整信箱存取 」 和 「 傳送 」 權限
正在執行 Msextmz.exe 的電腦的本機系統管理員

[授與信箱權限] 指令碼

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

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

VBS 指令碼的程式碼中的 〈 參考 〉 一節提供。下表說明這個指令碼會執行兩種模式。
模式命令列描述
新增CScript GrantMailboxPermission.vbs – 新增 Domain_Name\使用者名稱 File_Name授與 Domain_Name\使用者名稱 完整信箱存取 」 和 「 傳送 」 權限來列出輸入檔中的使用者信箱。輸入的檔必須包含以 CRLF 分隔的使用者信箱的舊版 DNs 的文字檔。

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

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

如果使用者屬於的弱點已被指派 「 拒絕存取 」 的安全性群組,指令碼會授與完整信箱存取 」 和 「 傳送 」 權限。不過,使用者將無法登入信箱。將 GrantMailboxPermission.err 檔案中記錄所有的錯誤。
移除CScript GrantMailboxPermission.vbs – 移除移除從 GrantMailboxPermission.log 檔案中列出的信箱的完整信箱存取 」 和 「 傳送 」 權限 Domain_Name\使用者名稱.的 Domain_Name\使用者名稱 GrantMailboxPermission.log 檔案中指定。
注意當您在執行 Exchange Server 電腦上執行此指令碼時,指令碼指令碼成功處理使用者時,就會傳回句號 (.)。如果不成功處理使用者指令碼就會傳回一個驚嘆號 (!)。

注意時區抽選模式的輸出檔不能用於這個指令碼的輸入檔。若要建立這個指令碼的輸入的檔,您可以時區擷取輸出檔案的內容貼到 [記事本],將內容儲存成新的文件,並再將新的文件作為輸入檔。

記錄在更新模式下的運作方式

從 Outlook 的時區資料更新工具的記錄檔

當 Outlook 工具執行時,工具會在暫存目錄中建立記錄檔。這個檔名為 「 Outlook 時區 Update.log 」。Msextmz.exe 擷取從 」 Outlook 時區 Update.log"的資訊,,然後建立記錄檔每個使用者的.ini 檔案 LogDirectory 中所指定的目錄中。

這些檔案的命名方式使用下列格式:
MSExTmz-使用者的使用者 DN 的 CN-隨機數字.記錄檔
例如,Outlook 工具會記錄下列資訊:
MSExTmz-USER3-0x0131273E.LOG
Outlook 工具會執行此處理的使用者沒有下列 DN 時:
/ O = 第一的組織 OU = 第一個系統管理群組/CN = 收件者/CN = USER3

檔案時發生錯誤

如果 Msextmz.exe 是無法針對任何信箱執行 Outlook 工具,使用者的 DN 將記錄在檔案時發生錯誤。Msextmz.exe 會記錄任何錯誤檔如果 Outlook 工具已順利執行。

記錄檔

如果記錄檔選項設定在 Msextmz.ini 檔案中,Msextmz.exe 的資訊輸出到 [命令提示字元] 視窗也會出現在指定的檔案。

如何執行 Msextmzcfg.exe

Msextmzcfg.exe 自動化程序擷取時區、 解析為每個使用者的時區及產生使用者清單以及需要在更新模式下執行 Msextmzcfg.exe 的.ini 檔案。我們建議您執行這些步驟,而不是以手動方式執行它們使用 Msextmzcfg.exe。本章節說明如何執行 Msextmzcfg.exe。

所需的權限

用來執行 Msextmzcfg.exe 的帳戶必須具有下列權限,用戶端上:
  • Exchange 僅檢視管理
  • 本機系統管理員

若要使用 Msextmzcfg.exe 來更新 Exchange 伺服器處理程序範例

  1. 在用戶端電腦上建立登入信箱位於您想要更新的 Exchange 伺服器上的 Outlook 設定檔。請確定在線上模式中,正在設定檔,然後設定 [此為預設設定檔的設定檔。

    注意Exchange 伺服器必須支援線上模式。
  2. 執行 Msextmzcfg.exe 來啟動 [Exchange] 工具。
  3. 在 Exchange 行事曆更新工具精靈] 的其中一個頁面上,完成下列程序之一:

    擷取時區貴 Exchange 伺服器上的信箱,請依照下列步驟執行:
    1. 在 [伺服器名稱] 方塊中,鍵入易記的名稱或完全合格網域名稱 (FQDN) 的 Exchange 伺服器。如果好記的名稱中包含 「。 」,而是使用 NetBIOS 名稱。如果伺服器是在另一個 Active Directory 樹系,Msextmzcfg.exe 將會失敗。
    2. 從擷取輸出檔案] 方塊中,鍵入將包含所有信箱時區資訊的檔案名稱。
    3. 如果您要擷取週期性會議的時區,請按一下以選取擷取週期性會議時區] 核取方塊。

      重要如果您使用此設定時,擷取模式的執行的時間會大幅增加。根據預設,會清除擷取週期性會議時區] 核取方塊。
    4. 按一下 [ Outlook 設定檔名稱] 清單中,然後按一下 [建立在步驟 1 中的設定檔。
    5. 按一下 [下一步。


    若要略過時區擷取,請依照下列步驟執行:
    1. 按一下以選取 [略過時區擷取] 核取方塊。根據預設,會清除略過時區擷取] 核取方塊。
    2. 從擷取輸出檔案] 方塊中,輸入從先前的時區擷取執行輸出檔案的名稱。
    3. 在 [伺服器名稱] 方塊中,鍵入易記的名稱或用於產生您在步驟 3b 中指定的輸出檔的 Exchange 伺服器的 FQDN。
    4. 按一下 [下一步]
  4. 時區後擷取已經完成,Msextmzcfg.exeparses 的輸出檔,並嘗試從使用者 mailboxesto 實際作業系統時區的時區。

    如果任何時區無法 bematched,您必須以手動方式將對應對應時區頁面上的時區。若要這麼做,請按一下符合 theUser 時區, Windows 時區] 清單中,在 Windows 時區,然後按一下 [下一步]
  5. 當對應程序完成時,Msextmzcfg.execategorizes 使用者到下列群組:
    • 只有一個時區 (例如,具有使用者 CDO、 Outlook Web Access、 Outlook 或週期性的會議時間區域) 的使用者或使用者有多個對應到相同的作業系統時區的時區
    • 具有多個對應至不同的作業系統時區的時區的使用者
    • 沒有任何時區資訊的使用者
    Msextmzcfg.exe 可讓您在分隔文字檔案中儲存的 「 衝突 」 和 「 不存在 」 的使用者清單。若要執行這項操作,請依照下列步驟執行:
    1. 含有衝突的時區資訊的使用者] 區域中,鍵入 ConflictUsers.txt 輸出檔案] 方塊中。
    2. 具有任何時區資訊的使用者] 區域中,鍵入 NonExistent.txt輸出檔案] 方塊中。
  6. 在 [行事曆更新組態] 頁面中,提供的資訊,才能產生使用者清單的輸入的檔、.ini 檔案,以及用來更新信箱的批次檔。Dothis,請依照下列步驟執行:
    1. 選取 [需要更新的時區] 清單中,按一下以選取您想要更新的時區的核取方塊。
    2. 批次檔數目] 方塊中,鍵入您想要產生的使用者批次數目。

      這項資訊是很有用,如果您想要加快執行時間的更新。您可以藉由將數量龐大的使用者分成較小的批次,然後執行在更新模式下的 [多個 Msextmz.exe 執行個體來這麼做。在不同電腦上執行這項操作,而且有 Msextmz.exe 程序不同的批次的使用者的每個執行個體。

      注意您無法在相同的用戶端電腦上執行多個 Msextmz.exe 執行個體。
    3. Tzmove.exe 路徑] 方塊中,輸入路徑的 Outlook 工具和它的參數。如果您想要更新唯一的週期性會議,按一下以選取 [僅週期性會議] 核取方塊。
    4. 張貼信箱延遲 (秒) ] 方塊中,鍵入您想要延遲之間更新信箱的設定檔建立的秒數。我們建議您使用 0 秒的預設值。
    5. 每個信箱逾時 (分鐘) ] 方塊中,鍵入您想要的 Outlook 工具,它將會逾時時間之前所要等待的分鐘數。我們建議您使用 15 分鐘的預設值。
  7. 按一下 [完成]。Msextmzcfg.exe 會產生目前的執行目錄下的 asubdirectory。Thesubdirectory 名稱是 Exchange 伺服器的易記名稱。Subdirectorycontains 下列檔案:
    • MSExTmz_x.ini

      這個檔案是由 Msextmz.exe 用來在更新模式下執行的.ini 檔案。 x 為批次號碼的預留位置。
    • Mailboxes_x.txt

      這個檔案是使用者清單輸入的檔案的 Msextmzcfg.exe 用來在更新模式下執行。 x 為批次號碼的預留位置。
    • MSExTmz_x.bat

      這個檔案是在更新模式下,對 Mailboxes_ 中所指定的使用者執行 Msextmzcfg.exe 的批次檔x在.txt 檔案。
    • NonExistent.txt

      這個檔案包含信箱中不具有時區資訊的使用者的清單。
    • ConflictUsers.txt

      這個檔案包含具有時區衝突的使用者清單。
  8. 找出伺服器來命名的子目錄,在記事本中開啟 Mailboxes_x.txt 檔案,移除任何資源或系統信箱項目,並將 Mailboxes_x.txt 檔案儲存。
  9. 請依照下列步驟執行:
    1. 啟動 Outlook,,然後確認 [Outlook 正確登入伺服器使用預設設定檔,而不提示您選取的設定檔。
    2. 請確認在 Outlook 啟動時會顯示任何提示。如果有提示,無法執行 Msextmz.exe。
    3. 請確認下列的檔案不存在:
      %USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook\Extend.dat
      如果這個檔案存在,請將它重新命名。
    該 isnamed 子目錄前往之後伺服器,並藉由執行批次檔一個接一個,請更新信箱。若要成功地執行 thebatch 檔案,您必須使用具有完整信箱 Accessand 傳送為 」 權限對您想要更新的信箱的帳戶。

執行 Exchange 工具之後,該怎麼辦

安裝更新

您完成更新您的環境中的所有 Exchange 伺服器之後,請在 Exchange 伺服器上安裝下列更新:
926666 Exchange 2003 Service Pack 2年的 2007 年的日光節約時間變更的更新

已知的問題

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

    如果您更新信箱之前,您可以安裝 Exchange 伺服器上的知識庫文件 926666 中的所提到的更新,Outlook Web Access 中建立的週期性會議不會更新 Exchange 工具。若要解決這個問題,請移除更新 926666、 執行 Exchange 的工具,然後 Exchange 伺服器上重新安裝更新 926666。
  • 執行 Exchange 工具之後,必須重新啟動 Exchange 2007

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

    Exchange 工具不會成功安裝 ifeither 的下列登錄機碼是否存在:
    • HKEY_CLASS_ROOT\Outlook.Application.9
    • HKEY_CLASS_ROOT\Outlook.Application.10
    在此情況下,您會收到下列錯誤訊息 whenyou,請嘗試安裝 Exchange 工具:
    Exchange ServerCalendar 重定基底工具無法安裝此版本的 MicrosoftOutlook。
    若要解決這個問題,請刪除這些登錄機碼、 安裝 [Exchange] 工具,然後再還原登錄機碼。
  • 時區可能模稜兩可

    在太平洋 (PST) 時區在 Outlook 2003 或 Outlook earlierversion 中使用 DST2006 規則所建立的週期性行事曆項目不會更新 Outlook 工具。這個問題 affectsMsextmz.exe 因為 Msextmz.exe 執行 Outlook 工具。

    若要處理這個問題,變更登錄,以移除墨西哥時區執行 Msextmz.exe 的電腦上。在更新模式下執行 Msextmzcfg.exe,然後還原墨西哥時區登錄中。若要執行這項操作,請遵循 thesesteps。

    重要這個章節、 方法或工作包含修改登錄的步驟。不過,如果您不當修改登錄,可能會發生嚴重的問題。因此,請務必小心執行這些步驟。為加強保護,請在修改前備份登錄。然後,您可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    322756 如何備份及還原 Windows 中的登錄
    1. 備份登錄。
    2. 按一下 [開始],按一下 [執行] 型別 regedit然後按一下[確定]
    3. 展開下列子機碼:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time 區域
    4. 墨西哥標準時間,以滑鼠右鍵按一下,然後按一下 [刪除]。
    5. 在 [確認機碼刪除] 對話方塊中,按一下 [
    6. 墨西哥標準時間 2] 上按一下滑鼠右鍵,然後按一下 [刪除
    7. 在 [確認機碼刪除] 對話方塊中,按一下 [
    8. 在更新模式下執行 Msextmzcfg.exe。
    9. 從您在步驟 1 中建立的備份來還原登錄。
    如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    編號 256986 Microsoft Windows 登錄說明
  • 沒有可以處理每個伺服器的信箱數目限制

    在使用者清單模式及時區擷取 mode,Msextmz.exe 可以處理伺服器上只有 65535 的信箱。如果將不會處理超過 65535 的信箱,某些信箱伺服器 hasmore。
  • 有可能發生衝突的會議空間工作分派

    當您使用 Outlook 工具時,會議移位,以正確的時間。然而,這可能造成衝突的會議 roomassignments。

    如果您正在執行 Exchange Server 2007,我們 recommendthat 您設定資源預約服務員的衝突限制在 Exchange2007 中為 3。更新所有信箱後,衝突將會自動 beresolved。

    如果您使用的直接預約或 「 自動接受代理程式 」,請依照下列步驟來更新資源信箱:

    為直接預約

    注意下列的步驟需要您的 Microsoft Office Outlook (Tzmove.exe) 下載最新 hotfix 時區資料更新工具。
    1. 使用/FORCEREBASESUPPRESSALLUPDATES命令列參數與資源信箱執行 Tzmove.exe (Outlook 工具)。
    2. 針對所有其他信箱的標準模式中執行 Tzmove.exe。
    在更新之後完成之後,如果您使用 Outlook 來登入到資源信箱 andto 讀取傳送在步驟 2 中的更新,那些會議更新資源信箱行事曆上顯示為 「 暫訂 」。如果沒有人登入的資源信箱時,如"接受"資源信箱行事曆上,會出現在步驟 1 中已更新的原始會議邀請。

    如需有關 FORCEREBASESUPPRESSALLUPDATES 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    933146 時區資料更新工具的 hotfix 套件的 Microsoft Office Outlook 的描述


    自動接受代理程式
    1. 請確定 「 自動接受代理程式 」 在伺服器上執行。
    2. 安裝日光節約時間更新用戶端電腦上。
    3. 使用/FORCEREBASESUPPRESSALLUPDATES命令列參數與資源信箱具有 「 自動接受代理程式 」 啟用執行 Tzmove.exe (Outlook 工具)。
    4. 確認一次執行 「 自動接受代理程式 」。這是要確保使用者會收到接受郵件的更新他們組織的會議。
    5. 針對所有其他信箱的標準模式中執行 Tzmove.exe。
  • 公用資料夾行事曆

    Exchange 工具不會更新公用的 Foldercalendars。如需有關如何更新公用資料夾行事曆,請參閱 Outlook 工具文件的資訊。
  • 您必須在命令列中使用 「 執行身分 」

    如果您想要使用 「 執行身分 」 命令列中執行 Msextmz.exe,請確定您也使用 「 執行身分 」 來設定在登錄中設定的 PickLogonProfile 值的執行。
  • Msextmz.exe 可能會停止回應

    通用類別目錄伺服器的問題可能會停止回應的 causeMsextmz.exe。如果發生這種情況,請依照下列步驟執行:
    1. 停止 Msextmz.exe。
    2. 如果記錄檔參數設定在 Msextmz.ini 中,找出哪一個信箱已被處理。處理信箱中的項目記錄檔提供使用者 DN Msextmz.exe 停止回應時處理的信箱。

      如果 Msextmz.ini 中未設定記錄檔的參數,可以找到處理的信箱資訊,在命令提示字元] 視窗中。

      Msextmz.exe 停止回應時處理的信箱之後的所有使用者信箱不會被處理。這適用於在用來做這項執行的輸入檔案 ServerName_TimeZone_Input_File.txt 中的信箱。
    3. 建立新的輸入的檔包含使用者 DNs 的未處理的信箱。
    4. 您 Msextmz.exe 再次執行這個新的輸入檔案之前,請確定您處理由先前執行所產生的錯誤檔案中的使用者。
  • 您可以在相同的環境中執行 Outlook 工具和 Exchange 工具

    您可以在相同的環境中執行 Outlook 工具和 Exchange 工具。如果您執行 Exchange 工具在信箱上的 hasalready 已經更新 Outlook] 工具中,或反之亦然,就會發生 noside 的效果。不過,如果系統管理員執行 Exchange 的工具,是供使用者分別執行 Outlook 工具的 noneed。
  • 稍後比預期顯示備忘提醒

    如果 Outlook 已經永遠不會連線到線上模式中的信箱,則非 meetingreminders 由 Exchange 工具更新的信箱會不 beupdated。在此情況下,提醒會出現一個小時之後超過預期。

    如果 Outlook hasnever 連線在線上模式中,您 mustadjust 不正確的行事曆約會提醒尋找 theOutlook 時區更新工具。如果 Outlook 永遠不會有連線在 Onlinemode 中,[提醒] 搜尋資料夾不存在的信箱中。Thereforethe 工具不會更新的電子郵件、 連絡人或其他提醒。Forexample,工具不會更新待未來 ata 時間的電子郵件項目提醒或提醒設定提醒的工作項目上。
  • 執行的階段可能長

    Msextmz.exe 是單一執行緒。因此,它無法 takemany 小時,若要對多個信箱執行此工具。

    對於參考,Microsoft IT 是能夠藉由使用九個用戶端在 16 小時更新大約 53,000 的信箱。這相當於 6.13 信箱每分鐘每個用戶端的更新率。

    受邀者在會議邀請中的數目應該不會影響執行的階段的更新模式。這是因為用戶端的觀點而言,將會議更新傳送給收件者會將會議更新傳送至多達一百個收件者的相同時間。

    受邀者的數目,並會影響會議更新的列印份數。不過,這是郵件流量,而非執行階段的問題。
  • 事件記錄檔空間不足之後更新多個信箱

    Tzmove.exe 會產生參考事件,包括來源 TZMOVE 識別碼 32 的每個成功更新。大量事件可能會造成應用程式記錄檔,超過配置的空間在磁碟上。在更新模式下,Msextmz.exe 會依賴這些事件以判斷 Tzmove.exe 的成功執行。如果 Msextmz.exe 找不到對應的 Tzmove.exe 事件 Msextmz.exe 嘗試更新信箱與相關聯,Msextmz.exe 會假設更新並未成功。因此 Msextmz.exe 會在 error.txt 檔案中記錄信箱 DN。若要避免這個問題,我們建議您將事件記錄檔大小設定為最大值,並且您允許的資料覆寫。
  • 「 無法安裝,因為偵測到舊版的 「 Microsoft Exchange 行事曆更新工具 」。請解除安裝後,再次執行這個安裝程式 」

    如果您先前安裝的 Exchange 行事曆更新工具版本 1.0,您必須在安裝 2.0 版之前,先解除安裝 1.0 版。為自動解壓縮的可執行程式,包含兩個 MSI 套件散佈 1.0 版: Msextmz.msi 和 Msextmzcfg.msi。您在安裝 2.0 版之前,您必須解除安裝這兩個套件。如果您仍然無法安裝 2.0 版,請嘗試重新安裝和解除安裝版本 1.0,使用 *.msi 套件,而不是使用 [新增或移除程式] 工具。然後,重新啟動電腦,並安裝 2.0 版。如果所有方法都失敗,直接從 *.msi 封裝擷取二進位碼檔案。

錯誤訊息和解決方案

  • 無法尋找信箱 timezone:Error 0x80004005
    這個錯誤訊息可能被因下列問題之一:
    • 工具無法在該特定使用者的信箱中尋找任何時區。若要解決這個問題,請嘗試新增"ReadCalendarTimeZones = 1"(不含引號) 至 Msextmz.ini 檔案,以強制工具在檢查時區資訊的週期性行事曆項目。您可以使用從您上次執行從收到的錯誤記錄的 DNs,以建立新的輸入的檔。
    • 您從錯誤的目錄參考 Tzmove.exe。若要解決這個問題,請展開下載的安裝檔案到 Msextmz 所在的位置,或更新 Tzmove.exe 所使用的工作站上的安裝位置的完整路徑中加入 Msextmz.ini 的資料夾。

      注意您的 Microsoft Office Outlook 下載時區資料更新工具,Tzmove.exe 檔案時,[實際] 工具的安裝程式。當您執行 Msextmz 時,參考安裝程式會導致錯誤。
    • 您用來執行 Msextmz 的帳戶並沒有完整的信箱權限,而沒有被委派正確 Exchange 的權限。若要解決這個問題,請從 Exchange Server 電腦執行 [授與信箱權限] 指令碼。
  • 無法處理信箱 /O =CONTOSO/ OU =第一個管理群組/ CN =收件者/ CN =TESTMB01 -0x80004005
    仔細檢閱 legacyExchangeDN,並進行任何必要的更正。若要確定值正確無誤,請使用 ADSIEdit 來複製並貼上值。
  • 無法開啟信箱表格伺服器 /O =CompanyRoot/ OU =/cn = 組態/cn = 伺服器/cn =EXCH01.錯誤 80040115
    這是 RPC 錯誤。仔細檢閱 legacyExchangeDN,並進行任何必要的更正。
    請選取有效的伺服器
    您需要伺服器的辨別的名稱 (DN)。DN 應該類似下列的 DN:
    ServerDN: / O = CompanyRoot/OU = IT / cn = 組態/cn = 伺服器/cn = EXCH01
  • 應用程式無法正確地初始化 (0xc0000135)。按一下 [確定] 終止應用程式
    未安裝.NET Framework 2.0,就會發生這個錯誤訊息。
  • HrTestMailboxAccess: 無法開啟信箱-0x8004011D。
    如果您在更新作業期間收到這個錯誤訊息,您所使用的帳戶沒有完整存取信箱。帳戶必須具有完整信箱存取權限,才能夠更新信箱工具的所有信箱。

    請確認正確的權限已授與使用 「 Msextmz.exe 的設定權限 」 一節中所述的方法。
参考

[授與信箱權限] 指令碼

Option Explicit' For FileSystemObjectConst ForReading = 1Const ForWriting = 2Const ForAppending = 8Const TristateTrue = -1Const TristateUseDefault = -2Const TristateFalse = 0'Permission Type: Allow or DenyConst ADS_ACETYPE_ACCESS_ALLOWED = &H0Const ADS_ACETYPE_ACCESS_DENIED = &H1Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6Const ADS_ACEFLAG_INHERIT_ACE = &H2Const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &H4Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8Const ADS_ACEFLAG_INHERITED_ACE = &H10Const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &H1fConst ADS_ACEFLAG_SUCCESSFUL_ACCESS = &H40Const ADS_ACEFLAG_FAILED_ACCESS = &H80'Declare ADSI constantsConst ADS_SCOPE_SUBTREE = 2Const ADS_OPTION_SECURITY_MASK = 3Const ADS_OPTION_REFERRALS	= 1Const ADS_SECURITY_INFO_DACL = 4Const ADS_CHASE_REFERRALS_NEVER = &h00 Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 Const ADS_CHASE_REFERRALS_EXTERNAL = &h40'Microsoft Exchange Const EX_MB_SEND_AS_ACCESSMASK  = &H00100Const EX_FULLMAILBOX_ACCESSMASK = 1Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"'Application Parameter IndexConst ARG_INDEX_MODE = 0Const ARG_INDEX_USERNAME = 1Const ARG_INDEX_FILENAME = 2Const MIN_ARG = 1Const MODE_INVALID = -1 Const MODE_ADD = 0Const MODE_REMOVE = 1Const ADD = "-ADD"Const REMOVE = "-REMOVE"'Application Const StringConst EMPTYSTRING = ""Const ERROR_FILENAME = "GrantMailboxPermission.err"Const OUTPUT_FILENAME = "GrantMailboxPermission.log"Dim OUTPUT_DELIMITEROUTPUT_DELIMITER = vbTab'Logging fileDim objFSODim objfileErrorDim objfileOutputDim objfileImportDim objconnDim objCommandDim rootDSEDim sDomainContainerDim sUserLDAPPathDim objUserDim objSDNTsecurityDim objDACLNTDim objDACLEXDim objSDMailboxDim fFMADim fSendAsDim AccessTypeForFMADim AccessTypeForSendASDim fAddedFMADim fAddedSendAsDim fRemovedFMADim fRemovedSendAsDim sArraySplitDim sOneRowDim sGrantedUserDim dArgCountDim cScriptModeDim dArgExpectedDim fOneErrorOn Error Resume Next'Parameter CheckingdArgCount = Wscript.Arguments.CountIf (dArgCount < MIN_ARG) Then	DisplaySyntaxEnd IfcScriptMode = MODE_INVALIDSelect 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_INVALIDEnd SelectIf (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then	DisplaySyntaxEnd IfIf (cScriptMode = MODE_ADD) Then	sGrantedUser = WScript.Arguments(ARG_INDEX_USERNAME)	If (IsValidUserName(sGrantedUser) = False) Then		DisplaySyntax	End IfEnd IfCreateImportExportFilesIf (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		    ' Check Full Mailbox Access and Send As permission		    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 we don't have either SendAS or FMA, we're going to add these permission		    If ( (AccessTypeForFMA = ADS_ACETYPE_ACCESS_DENIED) Or (AccessTypeForSendAs = ADS_ACETYPE_ACCESS_DENIED_OBJECT) ) Then			    'Deny access already granted, won't add permission to 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 FMA permission				    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 SendAs permission				    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	LoopSet rootDSE = NothingSet objCommand = NothingSet objconn = NothingEnd IfIf (cScriptMode = MODE_REMOVE) Then	'Retreive the granted user from the first line of 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)		'First column is Ldap path		sUserLDAPPath = sArraySplit(0)		'Second column is FullMailbox Permission		fAddedFMA = sArraySplit(1)		'Third column is SendAs		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	LoopEnd IfCloseImportexportFilesFunction IsValidUserName (sUserName)	Dim dPosition	dPosition = InStr(1, sUserName, "\")	If (dPosition = 0 ) Then		IsValidUserName = False		objfileError.WriteLine("Invalid User:" & sUserName)	Else		IsValidUserName = True	End IfEnd FunctionFunction 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 = NothingEnd FunctionFunction 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 = NothingEnd FunctionFunction 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 FunctionFunction 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 FunctionFunction 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 = NothingEnd FunctionFunction 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 = NothingEnd FunctionFunction 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 output file name as 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		'Check if output file already exists.		If (objFSO.FileExists(sOutputFileName)) Then			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForReading, False, TristateTrue)			sOneRow = objfileOutput.ReadLine			'If user name in the file is different from parameter, we can't proceed.			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 Log file is the user who is going to be 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 IfEnd FunctionFunction 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 = NothingEnd FunctionFunction 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

修訂

版本日期變更
1.02007 年 1 月 11 日原始版本
2.02007 年 1 月 12 日編輯的變更
3.02007 年 2 月 07 日完整的文件重寫
3.12007 年 2 月 08-更新的下載中心 URL
3.22007 年 2 月 08-編輯的變更
4.02007 年 2 月 09-加入新會議空間衝突的相關資訊
4.12007 年 2 月 12 日新增至 「 適用於 」 一節 Exchange 2003 企業版
4.22007 年 2 月 12 日更正的印刷錯誤
4.32007 年 2 月 12 日更正附註中的步驟編號
5.02007 年 2 月 13 日新增的虛擬機器 」 如何安裝 Exchange 工具 」 一節中的資訊
6.02007 年 2 月 15 日"比預期稍後顯示備忘提醒"區段的重新寫入
7.02007 年 2 月 15 日虛擬機器以獲得 Microsoft Exchange 行事曆更新工具套件的新增的下載資訊
8.02007 年 2 月 16 日加入 「 內容之前執行 Exchange 工具 」 一節中的 Exchange 系統管理工具的相關資訊
8.12007 年 2 月 19 日修正過的 「 如何執行 Msextmzcfg.exe 」 一節中的檔案名稱
8.22007 年 2 月 20 日使用者名稱和在 [授與信箱權限] 的指令碼] 區段中的 File_Name 之間新增的空間
9.02007 年 2 月 20 日重新寫入的文件
10.02007 年 2 月 20 日更新內部中繼資料
10.12007 年 2 月 20 日更正的印刷錯誤
10.22007 年 2 月 20 日更正的印刷錯誤
10.32007 年 2 月 20 日更正的印刷錯誤
10.42007 年 2 月 21 日更正的印刷錯誤
11.02007 年 2 月 22 日Exchange 工具的第 2 版的加入的資訊
11.12007 年 2 月 22 日更正的印刷錯誤
11.22007 年 2 月 23 日附加的表格,以指出文件修訂
12.02007 年 2 月 26 日加入的事件記錄檔空間和加入的錯誤訊息和錯誤的解決方法的相關資訊的相關資訊
13.02007 年 2 月 27 日已移除的下載 URL 的虛擬機器資訊和 933185 的加入交互參照
14.02007 年 2 月 28 日在 「 已知的問題 」 區段中,變更包含 KB926666 的第一個項目符號中的文字
15.02007 年 2 月 27 日新增的虛擬機器資訊
16.02007 年 2 月 28 日加入有關的資訊用於 Microsoft Office Outlook (Tzmove.exe) 的時區資料更新工具 」 的直接預約 」 一節的最新 hotfix。933146 的加入交互參照
16.12007 年 2 月 28 日更正表格標籤
17.02007 年 3 月 01 日已移除的 Exchange Server 5.5 資訊
18.02007 年 3 月 05 日Rewrote 修訂表格
19.02007 年 3 月 08-加入 「 HRTestMailboxAccess 」 錯誤訊息的相關資訊
19.12007 年 3 月 13 日在會議邀請中移除重複的段落,有關受邀者的數目
19.22007 年 3 月 19 日更新的修訂表格
19.32007 年 3 月 21 日移除的虛擬機器 」 有關 Exchange 工具 」 一節中的資訊
19.42007 年 4 月 03 日更新的簡介章節
19.52007 年 8 月 04 日更新的標題
21.02007 年 9 月 06 日加入文件 941018 的較新的工具的相關資訊
21.12007 年 9 月 07 日移除過時的知識庫文件連結。

警告:本文為自動翻譯

內容

文章識別碼:930879 - 最後檢閱時間:12/23/2014 01:10:00 - 修訂: 23.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 kbresolve kbexpertiseinter kbinfo kbmt KB930879 KbMtzh
意見反應