كيفية التعامل مع التوقيت الصيفي باستخدام أداة تحديث تقويم Exchange

مقدمة

التوقيت الصيفي نظام لتعيين الساعات المقبلة حيث تحدث كل من شروق الشمس وغروب الشمس في وقت لاحق. هو التأثير الصيفي أكثر في المساء. لاحظ العديد من البلاد التوقيت الصيفي. تحتوي معظم هذه البلدان القواعد والأنظمة الخاصة بهم عند بدء التوقيت الصيفي وينتهي.

تواريخ التوقيت الصيفي (DST) قد تتغير من سنة إلى أخرى. يجب تحديث تقويم Outlook كل مرة يتم تغيير قواعد DST مستخدمي Microsoft Outlook. التواريخ بين قواعد DST السابقة وقواعد التوقيت الصيفي الحالي يشار في هذه المقالة "الفترة الزمنية DST الموسعة."

توضح هذه المقالة الإجراءات التي يمكنك اتخاذها لمعالجة عناصر التقويم في Outlook التي تحدث أثناء الفترة الزمنية DST الموسعة. توضح هذه المقالة الإجراءات التي يجب اتخاذها لتحديث عناصر التقويم مخزنة في Microsoft Exchange Server وفقا للتوقيت الصيفي النظام الجديد أيضا. يتضمن الحل المقدم في هذه المقالة أداة تحديث تقويم Exchange Microsoft ("أداة Exchange").

لمزيد من المعلومات حول كيفية تحضير للتغييرات في التوقيت الصيفي في 2007 (DST 2007) لكافة منتجات Microsoft المتأثرة، قم بزيارة موقع Microsoft التالي على الويب:في عام 2011، أن الحكومة الروسية اعتمدت قانونا لإلغاء "التوقيت الصيفي" (DST). لمزيد من المعلومات، قم بزيارة موقع Microsoft التالي على الويب:لمزيد من المعلومات باللغة الروسية، قم بزيارة موقع Microsoft التالي على الويب:

مزيد من المعلومات

حول أداة Exchange

بعد تثبيت التحديثات DST ل Microsoft Windows، سيتم عرض كافة المواعيد القديمة التي تحدث أثناء فترات تغيير التوقيت الصيفي بشكل غير صحيح كالتي تحدث بعد ساعة. وهذا صحيح بالنسبة للمواعيد المتكررة والمثيل المفرد. يجب تحديث هذه التعيينات حيث سيتم عرضها بشكل صحيح في Outlook في Microsoft Office Outlook Web Access وفي التطبيقات التي تعتمد على كائنات بيانات التعاون (CDO).

يوفر outlook أداة تسمى "أداة تحديث بيانات المنطقة الزمنية" ل Microsoft Office Outlook ("أداة Outlook"). هذه الأداة تمكن المستخدمين من تحديث التقويمات الخاصة بهم.

لمزيد من المعلومات حول "أداة تحديث بيانات المنطقة الزمنية"، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
931667 كيفية معالجة تغييرات التوقيت الصيفي في 2007 باستخدام "أداة تحديث بيانات المنطقة الزمنية" ل Microsoft Office Outlook

أداة تحديث تقويم Exchange ("Exchange الأداة") يساعدك على تجنب الصعوبات التي يواجهها المسؤولون في نشر الأداة Outlook على نطاق واسع لكافة المستخدمين والتأكد من أن كل مستخدم بتشغيل أداة Outlook بشكل صحيح.

وصف موجز لأداة Exchange

أداة Exchange يتكون من اثنين من الملفات القابلة للتنفيذ منفصلة. هذه الملفات موصوفة في الجدول التالي.
اسم الملف
الوصف
Msextmz.exeاستخراج هذا الملف القابل للتنفيذ معلومات المنطقة الزمنية من علب بريد على خادم يقوم بتشغيل Exchange Server. تحديث هذا الملف القابل للتنفيذ أيضا التقويمات علبة البريد للحصول على قائمة المستخدمين محددة.
Msextmzcfg.exeهذا الملف القابل للتنفيذ هو أداة تكوين التي تؤدي معظم الخطوات المتضمنة في تحديث ملقم Exchange Server.

حول الإصدار الجديد من أداة Exchange

بناء على ملاحظات العملاء، تم إصدار نسخة جديدة من أداة Exchange في 13 آب/أغسطس 2007. تشير هذه المقالة إلى الإصدار الجديد من أداة Exchange. إذا كنت تستخدم إصدار قديم من أداة Exchange، إلغاء تثبيته، وقم بتثبيت الإصدار الجديد.

يتضمن الإصدار الجديد من أداة Exchange التحسينات التالية:
  • استخراج المنطقة الزمنية وعمليات تحديث التقويم يتم الإسراع أربعة إضعاف.
  • واجهة المستخدم لأداة التكوين أكثر تبسيطا وبديهية.
  • القدرة على تحديث قاعات الاجتماعات وعلب بريد موارد الآن صلب أداة التكوين.
  • القدرة على تحديث علب بريد المستخدم هو الآن في صلب أداة التكوين.
  • مستند استكشاف الأخطاء وإصلاحها الآن المضمنة في أداة Exchange، ودمجه في أداة التكوين.
  • تحسين خوارزمية الاستخراج المنطقة الزمنية وإمكانيات معالجة الخطأ.
  • عملية التسجيل أكثر ألفه للمستخدم.

احتمال تشغيل أداة Exchange

عند تشغيل أداة Exchange، هناك مخاطرة أنه قد لا يتم تحديث المثيل المفرد المواعيد بشكل صحيح. على سبيل المثال، المواعيد المثيل المفرد أنه قد يتم تحديث مستخدم التي تم إنشاؤها بعد أن تم تحديث نظام التشغيل بشكل غير صحيح.

لتقليل هذه المخاطر، استخدم إحدى الطرق التالية:
  • تقليل الفاصل الزمني بين وقت تحديث أجهزة الكمبيوتر العميلة ووقت تحديث التقويمات علبة البريد.
  • إذا تم تحديث أجهزة الكمبيوتر في المؤسسة منذ وقت طويل، استخدم الإعداد فقط تحديث متكررة الاجتماعات في
    إعدادات متقدمة.

    بشكل عام، الأشخاص لا تقم بإنشاء المثيل المفرد المواعيد قبل عدة شهور. ولذلك، إذا تم تثبيت تحديثات التوقيت الصيفي قبل عدة أشهر، معظم الاجتماعات مثيل واحد التي تقع في الفترة الزمنية DST الموسعة سيتم تم إنشاؤها باستخدام القواعد انتقال DST الجديدة. هذه الاجتماعات لم يتم تحديث.
  • إذا كنت تعرف تاريخ تم فيه تحديث كافة أجهزة الكمبيوتر العميلة، استخدم إعداد التاريخ تصحيح نظام التشغيل في
    إعدادات متقدمة. إذا تم تحديد تاريخ، لا يتم تحديث المثيل المفرد المواعيد التي تم إنشاؤها بعد هذا التاريخ بأداة Exchange.
ملاحظة: في حالة تشغيل أداة Outlook أو أداة Exchange على كمبيوتر عميل الذي يقوم بتشغيل نظام التشغيل Windows Vista، ويمكنك تشغيل الأداة على علب البريد التي تم فيها المنطقة الزمنية الرئيسية "نيوزيلاند-التوقيت الرسمي"، يجب تشغيل الأداة مرة ثانية في أو بعد 1 كانون الثاني/يناير 2008. لمزيد من المعلومات، راجع قسم "المشكلات المعروفة".

خيارات لتحديث علب البريد

يسرد الجدول التالي الخيارات الخمسة التي يمكنك استخدامها لتحديث علب بريد المستخدم باستخدام قواعد المنطقة الزمنية DST 2007.
الخيار
العيوب
سلبياتها
توزيع أداة Outlook لكل مستخدم، ومن ثم إرشاد المستخدمين إلى تحديث علب البريد الخاصة بهم.هذا الخيار يتجنب المخاطر المرتبطة بتشغيل أداة Exchange.من الصعب أن تضمن أن كافة المستخدمين سيتم تشغيل الأداة Outlook بشكل صحيح وفي الوقت مناسب.

لن يكون المستخدمون الذين ليس لديهم Outlook قادراً على تشغيل أداة Outlook.

بذل جهد إضافي للتربية لتقليل التشويش للمستخدمين.
تشغيل الأداة Exchange المتأثرة على كافة المستخدمين والخوادم.
هذا الخيار يوفر تجربة مبسطة للمستخدمين.
هناك مخاطرة المقترنة باستخدام أداة Exchange، كما هو موضح في قسم "احتمال تشغيل أداة Exchange".
تشغيل أداة Exchange لتحديث المواعيد المتكررة فقط. السماح للمستخدمين بتحديث مثيل واحد المواعيد في علب البريد الخاصة بهم باستخدام أداة Outlook.هناك مخاطر أقل من المواعيد المثيل المفرد يتم تحديثها بشكل غير صحيح.وتقترن الحجج من تشغيل الأداة Outlook الحجج من تشغيل أداة Exchange.
قم بتشغيل الأداة Outlook لا أداة Exchange. أطلب من المستخدمين لفحص التقويمات الخاصة بهم وإعادة كتاب المواعيد حسب الحاجة.هذا الخيار يتجنب المخاطر المرتبطة بتشغيل أداة Exchange.
إلا إذا كافة المستخدمين إعادة كتاب المواعيد يؤثر، تكون بعض عناصر التقويم ساعة واحدة إيقاف أثناء الفترة الزمنية DST الموسعة.

بذل جهد إضافي للتربية لتقليل التشويش للمستخدمين.
توزيع أداة Outlook لكل مستخدم، ومن ثم إرشاد المستخدمين إلى تحديث علب البريد الخاصة بهم. ثم استخدم وضع "استخراج المنطقة الزمنية" في أداة Exchange لتحديد ما إذا كان المستخدمون يعملون أداة Outlook.


إذا لم المستخدمين بتشغيل الأداة Outlook، المسؤول تشغيل أداة Exchange.
يقلل هذا الخيار من خطر المستخدمين عدم تشغيل الأداة في الوقت مناسب، ويتجنب المخاطر المرتبطة بتشغيل أداة Exchange.هذا ليس خياراً إذا كان المستخدمون يعملون في Microsoft Office Outlook 2007.

كيفية تثبيت أداة Exchange

أداة تحديث تقويم Exchange يتوفر للتحميل في شكل ملف قابل للتنفيذ يتم استخراجه ذاتيا (Msextmz.exe). هذه الأداة متوفرة للتنزيل من "مركز تحميل microsoft":

Download قم بتنزيل حزمة أداة تحديث تقويم Exchange الآن.

يتم إنشاء جهاز ظاهري لمساعدتك في تثبيت واستخدام أداة Exchange. الجهاز الظاهري استناداً إلى نظام التشغيل Microsoft Windows Server 2003 أو Outlook 2007، Microsoft Office Excel 2007 أو Microsoft Office Word 2007. يعمل الجهاز الظاهري في كل من Microsoft Virtual PC 2004 R2 2005 الملقم الظاهري ل Microsoft.

لمزيد من المعلومات حول الجهاز الظاهري لأداة تحديث تقويم Exchange، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
933185 جهاز الظاهري متوفر للمساعدة في نشر تحديثات التقويم 2007 التوقيت الصيفي في مؤسسة Exchange

لمزيد من المعلومات عن كيفية تنزيل ملفات دعم Microsoft، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
119591 كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر الإنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدمت Microsoft أحدث برامج الكشف عن الفيروسات التي كانت متوفرة في التاريخ الذي تم نشر الملف فيه. يتم تخزين الملف على خوادم محسنة الأمان تساعد على منع إجراء أية تغييرات غير مصرح بها على الملف.

اللغات المعتمدة من قبل أداة Exchange

تتوفر أداة Exchange باللغة الإنكليزية فقط. سيتم تشغيل الأداة على جهاز كمبيوتر بالعربية فقط.

الإصدارات المتوافقة مع أداة Exchange من ملقم Exchange

تحديث أداة Exchange علب البريد من Exchange Server الإصدارات التالية:
  • Microsoft Exchange Server 2007 Enterprise Edition
  • الإصدار القياسي ل Microsoft Exchange Server 2007
  • Microsoft Exchange Server 2003 Enterprise Edition
  • الإصدار القياسي ل Microsoft Exchange Server 2003
  • Microsoft Exchange 2000 Server Enterprise Edition
  • Microsoft Exchange 2000 Server Standard Edition

أنظمة التشغيل المعتمدة من قبل أداة Exchange

سيتم تشغيل أداة Exchange على إصدارات 32 بت من أنظمة التشغيل التالية:
  • Microsoft Windows Server 2003
  • مايكروسوفت ويندوز إكس بي
  • Windows Vista

ما يجب فعله قبل تشغيل أداة Exchange

تثبيت التحديثات

قبل تشغيل الأداة Exchange، تأكد من تحديث أجهزة العميل والخادم بشكل صحيح. للقيام بذلك، تثبيت التحديث Windows DST على العملاء والخوادم.
لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
تحديث ديسمبر 2007 942763 التراكمي للمناطق الزمنية لأنظمة Microsoft Windows أنظمة التشغيل


إذا كنت تستخدم Microsoft Exchange Server 2003 Service Pack 2 (SP2)، تثبيت واحد أو كلا التحديثين التاليين للمؤسسة الخاصة بك:
  • تحديث 911829
  • تحديث 924334
لمزيد من المعلومات حول هذه التحديثات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
911829 ظهور رسالة خطأ عند محاولة تنفيذ أي مهام التحرير، أو النقر فوق لتمكين إطار الإنشاء في Outlook Web Access

924334 نموذج "إنشاء الرسالة" توقف عن الاستجابة بعد تثبيت Internet Explorer 7.0 وتحكم S/MIME على عميل Outlook Web Access في Exchange Server 2003
إذا كان المستخدمين داخل القدس، "البرازيل الوسطى" أو أمريكا الجنوبية E. المنطقة الزمنية، الرجاء قراءة هذا الدليل في مقالة "قاعدة معارف Microsoft" التالية:

943390 عناصر تقويم Outlook بعض يتم إعادة تأسيسها بشكل غير صحيح عند استخدام أداة تحديث بيانات المنطقة الزمنية Outlook لضبط تغييرات التوقيت الصيفي في بعض المناطق الزمنية

التحقق من متطلبات النظام

يجب تشغيل أداة Exchange على كمبيوتر الشروط التالية صحيحاً:
  • يحتوي الكمبيوتر على Microsoft Office Outlook 2003 Service Pack 2 (SP2) أو Microsoft Office Outlook 2007 مثبتاً.
  • لدى الكمبيوتر أداة بيانات المنطقة الزمنية في Outlook مثبت.
  • يتم تثبيت Microsoft.NET Framework الإصدار 2.0 على جهاز الكمبيوتر العميل.
لا يمكنك تشغيل أداة Exchange على كمبيوتر الذي يقوم بتشغيل Exchange Server أو أدوات إدارة نظام Exchange. إذا حاولت تثبيت أداة Exchange على كمبيوتر الذي يقوم بتشغيل Exchange Server أو أدوات إدارة نظام Exchange، تتلقى رسالة الخطأ التالية:
لا يمكن تثبيت Microsoft أداة تحديث تقويم Exchange مع Microsoft Exchange.

تحقق من الأذونات ومتطلبات المستخدم

التحقق من أن الشروط التالية صحيحاً:
  • إدارة مخزن معلومات تحديث الأذونات في كل قاعدة بيانات الرسالة Exchange Server (MDB).
  • يتم تحديث أذونات send As لكافة علب البريد.
  • يتم تحديث أذونات "الوصول إلى علبة البريد" كاملة لكافة علب البريد.
  • يتم منح أذونات المسؤول المحلية على الكمبيوتر الذي يقوم بتشغيل أداة Exchange.

حول البرنامج النصي "منح إذن علبة البريد"

يمكنك استخدام نموذج البرنامج النصي GrantMailboxPermission.vbs لمنح مجال المستخدم أذونات Full Mailbox Access "و" Send As لكافة علب البريد.

يمكن تشغيل هذا البرنامج النصي فقط من قبل مسؤول ملقم Exchange على كمبيوتر الذي يقوم بتشغيل Exchange 2000 Server أو Exchange Server 2003. لا يمكن تشغيل هذا البرنامج النصي على جهاز كمبيوتر يقوم بتشغيل Exchange Server 2007. ومع ذلك، يمكنك استخدام Shell إدارة Exchange لمنح الأذونات المطلوبة.

يتم توفير التعليمات البرمجية للبرنامج النصي vbs. في قسم "المراجع". يصف الجدول التالي وضعي الذي يتم تشغيل هذا البرنامج النصي.
وضع
الأمر
الوصف
إضافةCScript GrantMailboxPermission.vbs – إضافة اسم _ المجال \ اسم _ المستخدم اسم الملفيمنح هذا الأمر ثم انقر فوق خصائص
\ اسم _ المستخدم Full Mailbox Access وإرسال كأذونات المستخدم لصناديق بريد المستخدم المسرودة في ملف الإدخال.

يجب أن يكون ملف الإدخال ملف نصي يحتوي على أسماء المجال القديمة من علب بريد المستخدم. يجب تحديد هذه الأسماء خلال سطر "موجز ويب" (CRLF) + "حرف إرجاع".

يقوم البرنامج النصي بإنشاء ملف GrantMailboxPermission.log. هذا الملف هو سجل علب البريد التي تمت معالجتها. يكون السطر الأول من ملف السجل ثم انقر فوق خصائص
\ اسم _ المستخدم المستخدمين الذين تم منحهم حق الوصول. لا تقم بحذف هذا الملف. يتم استخدام هذا الملف في طريقة إزالة.


إذا تم تعيين وصول "رفض" صريح للمستخدم أو البرنامج النصي بتسجيل المعلومات في ملف يسمى "GrantMailboxPermission.err". ولن منح البرنامج النصي أو تغيير الإذن.

إذا كان المستخدم جزءا من مجموعة الأمان التي تم تعيين "رفض" الوصول، البرنامج النصي منح أذونات Full Mailbox Access "أو" Send As. ومع ذلك، يكون المستخدم غير قادر على تسجيل الدخول إلى علبة البريد. تسجل كافة الأخطاء الموجودة في الملف GrantMailboxPermission.err.
إزالةCScript GrantMailboxPermission.vbs – إزالةيزيل هذا الأمر أذونات Full Mailbox Access "و" Send As إلى علب البريد المسرودة في الملف GrantMailboxPermission.log من اسم _ المجال \ اسم _ المستخدم
المستخدم. اسم _ المجال \
يتم تحديد اسم _ المستخدم المستخدم في ملف GrantMailboxPermission.log.
ملاحظات
  • عند تشغيل هذا البرنامج النصي على جهاز الكمبيوتر الذي يقوم بتشغيل Exchange Server، يعود البرنامج النصي حرف الفترة الزمنية (.) عند معالجة البرنامج النصي بنجاح مستخدم. البرنامج النصي بإرجاع حرف علامة تعجب (!) عندما لا معالجة البرنامج النصي بنجاح مستخدم.
  • لا يمكن استخدام ملف الإخراج من وضع "استخراج المنطقة الزمنية" كملف إدخال لهذا البرنامج النصي. لإنشاء ملف الإدخال لهذا البرنامج النصي، لصق محتويات ملف الإخراج وضع "استخراج المنطقة الزمنية" في "المفكرة"، حفظ المحتويات كمستند جديد، ومن ثم استخدام مستند جديد باسم ملف الإدخال.

كيفية استخدام أداة Exchange

لاستخدام أداة Exchange، بدء تشغيل أداة تكوين تحديث تقويم Exchange (Msextmzcfg.exe). سيساعدك هذا البرنامج بالكامل عملية تحديث التقويمات.

تشغيل عملية الاستخراج المنطقة الزمنية

لتحديث التقويمات علبة البريد، يجب عليك تحديد المنطقة الزمنية للتقويمات. تبحث عملية الاستخراج المنطقة الزمنية الخصائص والمواعيد التقويمات علبة البريد لتحديد المناطق الزمنية الخاصة بها. لتشغيل عملية الاستخراج المنطقة الزمنية، اتبع الخطوات التالية:
  1. في صفحة الترحيب، انقر فوق التالي.


    ملاحظة: يقدم لك أداة تكوين صفحة "الترحيب" ويتناول الأذونات المطلوبة لتشغيل الأداة. توفر الصفحة أيضا رابط لهذه المادة.
  2. تحديد الإعدادات الخاصة بأداة التكوين. نوصي بأن تقوم بتخصيص 200 ميغابايت (MB) على الأقل من مساحة القرص للتسجيل.

    إذا كنت ترغب في تغيير الإعدادات الافتراضية، انقر فوق
    إعدادات متقدمة. لمزيد من المعلومات حول الإعدادات المتقدمة، راجع الجدول التالي هذا الإجراء.
  3. تحديد ملقمات Exchange في Active Directory دليل خدمة مجموعة التفرعات المحلية التي تحتاج إلى تحديث. ثم انقر فوق
    التالي لبدء عملية الاستخراج المنطقة الزمنية.

    ملاحظة: إذا قمت مسبقاً بإجراء الاستخراج المنطقة الزمنية، يمكنك تخطي هذه الخطوة عن طريق النقر فوق تخطي.

    لاحظ أنه يتم عرض شريط المعلومات، تصل إلى سجل الإخراج وعرض في الوقت الحقيقي لعملية الاستخراج المنطقة الزمنية. بعد اكتمال عملية الاستخراج المنطقة الزمنية، انقر فوق التالي.

    إذا حدثت أخطاء، يتم عرض ارتباط إلى المستند استكشاف الأخطاء وإصلاحها.
  4. تكوين صفحة علب البريد مع "المناطق الزمنية لا" ، وثم انقر فوق التالي لفحص عناصر التقويم.

    ملاحظة: في حالة عثور الأداة على المستخدمين الذين ليس لديهم خصائص مستوى علبة البريد التي تشير إلى المنطقة الزمنية الخاصة بها، تفحص الأداة الاجتماعات الفعلية والمواعيد داخل هذه التقويمات لتحديد المنطقة الزمنية. يمكنك تحديد العدد من خلاله تريد أداة التكوين لمسح عناصر التقويم. كلما زاد عدد العناصر التي قمت بتحديدها، زاد الفحص سيستغرق.
  5. في الصفحة حل أسماء عرض منطقة زمنية غير معروفة ، تطالبك الأداة بتعيين المناطق الزمنية يتعرف على الأداة إلى منطقة زمنية نظام تشغيل معروف. بعد القيام بذلك، انقر فوق
    التالي
  6. في حالة عثور أداة تكوين المستخدمين الذين لديهم مناطق زمنية متعددة، ستتم مطالبتك بحل التعارض يدوياً عن طريق تحديد منطقة زمنية واحدة لتحديث التقويم الخاص بالمستخدم. بعد القيام بذلك، انقر فوق
    التالي.
  7. في الصفحة حفظ DNs علبة البريد مع المناطق الزمنية التي لم يتم حلها ، يتم تسجيل أي المستخدمين المتبقين الذين لا تزال لديهم أية معلومات المنطقة الزمنية أو الذين لا تزال لديهم معلومات المنطقة الزمنية المتعارضة في ملف سجل منفصل. انقر فوق التالي.
اكتملت الآن عملية الاستخراج المنطقة الزمنية. توجد قائمة المستخدمين والمستخرج من المناطق الزمنية في ملف الإخراج (Output.txt) في دليل التثبيت.

إعدادات متقدمة

يصف الجدول التالي الإعدادات المتقدمة التي يمكنك تكوين في الخطوة 2 من الإجراء السابق.
الإعدادالوظائفسيناريواعتباراتإمكانية تطبيق
تحديث الاجتماعات المتكررة فقطهذا الإعداد بتحديث فقط الاجتماعات المتكررة التي تتأثر بالتغيير من التوقيت الصيفي. لا يتم تحديث المثيل المفرد المواعيد التي تقع في الفترة الزمنية DST الموسعة بغض النظر عن ما إذا كان ذلك يجب تحديثها.إذا تم تحديث أجهزة الكمبيوتر في المؤسسة منذ وقت طويل، استخدم هذا الإعداد.


بشكل عام، الأشخاص لا تقم بإنشاء المثيل المفرد المواعيد قبل عدة شهور. ولذلك، إذا تم تثبيت تحديثات التوقيت الصيفي قبل عدة أشهر، معظم الاجتماعات مثيل واحد التي تقع في الفترة الزمنية DST الموسعة سيتم تم إنشاؤها باستخدام القواعد انتقال DST الجديدة. هذه الاجتماعات لم يتم تحديث.
إذا كان أحد المستخدمين بإنشاء اجتماع المثيل المفرد عدة أشهر مقدما، لا يتم تحديث هذا الاجتماع إذا تم تعيين هذا الإعداد.ينطبق هذا الإعداد على كافة علب وجميع غرف الاجتماع وكافة التقويمات المستخدم.
تاريخ تثبيت تصحيح نظام التشغيليحدد هذا الإعداد لا يتم تحديث المثيل المفرد المواعيد التي تم إنشاؤها أو تحديث بعد التاريخ الذي تحدده.إذا كنت تعرف تاريخ تم فيه تحديث كافة أجهزة الكمبيوتر العميلة، يمكنك استخدام هذا الإعداد.

عند القيام بذلك، لا يتم تحديث الاجتماعات التي تم إنشاؤها بعد تثبيت التحديث. تقع هذه الاجتماعات ضمن قواعد منطقة زمنية جديدة.
يكون هذا الإعداد فعالاً فقط عندما تم تحديث كافة أجهزة الكمبيوتر العميلة في أقل من 24 ساعة، وعند اختراق عالية التحديث. (هناك اختراق عالية عند النسبة المئوية لأجهزة الكمبيوتر في المؤسسة التي تم تحديثها في نطاق 90 في المائة عالية.)

بالإضافة إلى ذلك، يمكن للمسؤولين تعيين تاريخ تحديث واحد فقط. الاجتماعات التي تم إنشاؤها في المناطق الزمنية التي تتوافق مع التحديثات المعينة ويجب تحديثها لمجموعات محددة من المناطق الزمنية.


الأمر لغرف الاجتماعات هو أن تحديث مؤتمر الغرف الموجودة في مناطق زمنية معينة فقط.

ضمناً لصناديق بريد المستخدم هو أنه إذا كان الإعداد سوبريسيكستشانجي أو
لم يتم تحديد الإعداد SuppressAll ، يتم تحديث علب بريد المستخدم فقط التي تنتمي إلى مناطق زمنية معينة.
ينطبق هذا الإعداد على كافة علب وجميع غرف الاجتماع وكافة التقويمات المستخدم.
سوبريسيكستشانجي و
MaxDepth
تتسبب هذه الإعدادات كافة المواعيد في التقويم المستخدم التي تتأثر بتغيير التوقيت الصيفي إلى تحديث بغض النظر عن ما إذا كان المستخدم المنظم هذه عناصر التقويم.

إذا كان المستخدم المنظم عنصر تقويم، لا يتم إرسال التحديثات إلى الحضور الذين لديهم علب بريد Exchange. يتم إرسال التحديثات إلى الحضور الذين ليس لديهم علب بريد Exchange.

تحديد الإعداد MaxDepth مستوى توسيع قائمة التوزيع الذي يتم تنفيذه لتحديد أي حضور لها علب بريد Exchange ولا أي حضور.
استخدم هذا الإعداد إذا كنت لا تريد مستخدمي Exchange لتلقي تحديثات الاجتماع من منظم الاجتماعات التي تتأثر بالفترة الزمنية DST الموسعة.

على
سوبريسيكستشانجي الإعداد أفضل من
إعداد SuppressAll إذا كان لدى المؤسسة نظم تقويم Exchange Server وحالة تتم جدولة الاجتماعات لتضمين الحضور الخارجية للمنظمة.
يتم إرسال أية تحديثات الاجتماع، باستثناء المستخدمين يستخدمون Exchange. وبالتالي، للتأكد من أنه يتم تحديث نسخ الجلسة نفسها لكافة الحضور المحتملة، كل علبة البريد في المؤسسة يجب تحديث.

هذا الشرط قد يؤدي إلى زيادة عدد علب البريد التي يتم تحديثها. لذلك، يمكن زيادة أوقات المعالجة.

عندما تكون قوائم توزيع كبيرة ومتداخلة على قائمة الحضور، أنها عملية مكلفة لحضور اجتماع تحدد ولتحديد ما إذا كان الحضور تلك علب بريد Exchange. في حالة تحديد هذا الإعداد وتعيين قيمة عالية للمعلمة MaxDepth ، قد وضع عبئا كبيرا على وحدات التحكم بالمجال.
يطبق هذا الإعداد فقط على صناديق بريد المستخدم.
SuppressAllيؤدي هذا الإعداد كافة المواعيد في التقويم المستخدم التي تتأثر بتغيير التوقيت الصيفي إلى تحديث بغض النظر عن ما إذا كان المستخدم المنظم هذه عناصر التقويم.

إذا كان المستخدم المنظم عنصر تقويم، لا يتم إرسال التحديثات إلى الحضور.
استخدم هذا الإعداد إذا كنت لا تريد الحضور لتلقي تحديثات الاجتماع من منظم الاجتماعات التي تتأثر الفترة الزمنية DST الموسعة.يتم إرسال أية تحديثات الاجتماع. وبالتالي، للتأكد من أنه يتم تحديث نسخ الجلسة نفسها لكافة الحضور المحتملة، كل علبة البريد في المؤسسة يجب تحديث.

هذا الشرط قد يؤدي إلى زيادة عدد علب البريد التي يتم تحديثها. لذلك، يمكن زيادة أوقات المعالجة.

عدم تلقي تحديثات الحضور الذين ليس لديهم علب بريد Exchange. تعيين هؤلاء الأفراد قد لا يتم تحديث، اعتماداً على نظام البريد الإلكتروني التي يتم تشغيلها وتستند إلى الإجراءت التي تأخذ بها المسؤول.
يطبق هذا الإعداد فقط على صناديق بريد المستخدم.

تحديث قاعات الاجتماعات وعلب بريد موارد

يجب عليك تحديث قاعات الاجتماعات وعلب بريد موارد لتجنب التعارضات في الحجز. للقيام بذلك، اتبع الخطوات التالية:
  1. في الصفحة تحديد الموارد وتقويمات غرفة المؤتمر ، اكتب أو الصق قائمة الأسماء مستعارة غرف الاجتماعات في المؤسسة الخاصة بك. انقر فوق حل للتحقق من صحة الأسماء المستعارة، ومن ثم انقر فوق التالي.
  2. في الصفحة حل المناطق الزمنية للموارد وتقويمات غرفة المؤتمر ، تطالبك الأداة بتحديد المنطقة الزمنية لغرفة يدوياً إذا لم يكن لدى الغرفة منطقة زمنية. القيام بذلك، ومن ثم انقر فوق التالي.
  3. يتم عرض صفحة تذكير للتذكير بأن الأداة على وشك تحديث التقويمات. انقر فوق التالي.
  4. لاحظ أنه يتم عرض شريط المعلومات، ارتباط سجل الإخراج, وعرض إخراج الأداة في الوقت الحقيقي. انقر فوق
    التالي.

    في حالة مواجهة أخطاء، يتم عرض ارتباط إلى المستند استكشاف الأخطاء وإصلاحها في أسفل هذه الصفحة.

تحديث التقويم علبة بريد المستخدم

للقيام بذلك، اتبع الخطوات التالية:
  1. صفحة الإعدادات "تحديث التقويمات علبة بريد المستخدم" ، قم بتكوين الإعدادات للتحديث.

    إذا لم تقم بتحديد سوبريسيكستشانجي أو
    SuppressAll إعدادات متقدمة، قم بتحديد المناطق الزمنية المتأثرة بالتوقيت الصيفي. وإلا، حدد كافة المناطق الزمنية.

    انقر فوق
    التالي.
  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

      يحتوي هذا الملف على قائمة علب البريد التي تم تحديثها بنجاح.
    ملاحظة: تحتوي كافة الدلائل الفرعية العمل على هذه الملفات.

    يحتوي دليل فرعي الموارد أيضا على الدليل الفرعي التالي:
    • ملفات السجلات

      ويتضمن هذا الدليل الفرعي تحديث السجلات لكل علبة البريد التي تم تحديثها بنجاح. يجب أن يتضمن كل سجل تحديث قائمة بالاجتماعات التي تم تحديثها.
  • Server_Name

    وهناك دليل فرعي واحد لكل ملقم التي تم تنفيذ عملية الاستخراج المنطقة الزمنية أو تحديث تقويم. هذه الدلائل الفرعية التي تحتوي على الدلائل الفرعية التالية:
    • كاليندارسكان

      وهذا الدليل الفرعي العمل لعملية الفحص التقويم.
    • استخراج

      وهذا الدليل الفرعي العمل لعملية الاستخراج المنطقة الزمنية.
    • التحديث

      وهذا الدليل الفرعي العمل لعملية التحديث علبة بريد المستخدم. ويتضمن الدليل الفرعي التالي:
      • ملفات السجلات

        ويتضمن هذا الدليل الفرعي تحديث السجلات لكل علبة البريد التي تم تحديثها بنجاح. يجب أن يتضمن كل سجل تحديث قائمة بالاجتماعات التي تم تحديثها.

ما يجب فعله بعد تشغيل أداة Exchange

بعد الانتهاء من تشغيل أداة Exchange على كافة ملقمات Exchange في البيئة الخاصة بك، تطبيق التحديثات المناسبة التوقيت الصيفي خادم Exchange. تم تنظيم القائمة التالية حسب مستوى حزمة الخدمة وإصدار ملقم Exchange. تثبيت التحديثات لإصدار ملقم Exchange بالترتيب.

التطبيق Exchange Server 2007
وصف 940006 التحديث التراكمي 4 ل Exchange Server 2007

يتضمن التحديث التراكمي 4 ل Exchange Server 2007 DST الإصلاحات التالية:
  • 937656 واجهت مشاكل في Outlook Web Access للتطبيق Exchange 2007 بعد بدء التوقيت الصيفي (DST) في نيوزيلندا في عام 2007

  • 932561 المواعيد التي يتم إرسالها من مؤسسة Exchange واحد إلى آخر باستخدام Exchange 2007 قد تكون غير صحيحة بمقدار ساعة واحدة في حالة منظمة واحدة في المنطقة الزمنية أستراليا الغربية

Exchange Server 2003 SP2
926666 تحديث تغييرات التوقيت الصيفي في 2007 ل Exchange 2003 Service Pack 2

تحديث 931915 تغييرات التوقيت الصيفي في نيوفاوندلاند في 2007 ل Exchange Server 2003 Service Pack 2

929895 المواعيد التي يتم إرسالها بين المؤسسات Exchange Server مختلفة قد تكون غير صحيحة بمقدار ساعة واحدة عندما يكون إحدى المنظمات في المنطقة الزمنية أستراليا الغربية

937653 تواجه مشكلة واحدة أو أكثر في Exchange Server 2003 بعد فترة التوقيت الصيفي لنيوزيلندا يتغير في عام 2007

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، ثم قم بإعادة تثبيت تحديثات Exchange Server على ملقم Exchange.
  • يجب إعادة تشغيل التطبيق Exchange 2007 بعد تشغيل أداة Exchange

    لعرض عناصر التقويم بشكل صحيح، يجب إعادة تشغيل خدمات Exchange بعد تشغيل أداة Exchange ل Outlook Web Access في Exchange 2007.
  • لا يمكنك تثبيت أداة Exchange

    لا يتم تثبيت أداة Exchange بنجاح في حالة وجود أي من مفاتيح التسجيل التالية:
    • HKEY_CLASS_ROOT\Outlook.Application.9
    • HKEY_CLASS_ROOT\Outlook.Application.10
    في هذا السيناريو، تتلقى رسالة الخطأ التالية عند محاولة تثبيت أداة Exchange:
    لا يمكن تثبيت Exchange Server إعادة التأسيس أداة "تقويم" مع هذا الإصدار من Microsoft Outlook.
    لحل هذه المشكلة، حذف مفاتيح التسجيل هذه، تثبيت أداة Exchange، ثم استعادة مفاتيح التسجيل.

    هام: يحتوي هذا المقطع أو الأسلوب أو المهمة على الخطوات التي توضح كيفية تعديل التسجيل. ومع ذلك، قد تحدث مشكلات خطيرة إذا قمت بتعديل التسجيل بشكل غير صحيح. لذلك، تأكد من اتباع الخطوات التالية بعناية. للحماية الإضافية، قم بعمل نسخة احتياطية للسجل قبل تعديله. بعد ذلك، يمكنك استعادة السجل في حالة حدوث مشكلة. لمزيد من المعلومات حول كيفية عمل نسخة احتياطية من السجل واستعادته، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
    322756 كيفية عمل نسخة احتياطية من السجل واستعادته في نظام التشغيل Windows
  • هناك قيد على عدد علب البريد التي يمكن معالجتها لكل ملقم

    في وضع "قائمة المستخدمين" ووضع "استخراج المنطقة الزمنية"، يمكن معالجة Msextmz.exe علب 65535 فقط على خادم. إذا كان الملقم علب البريد 65.535 أكثر من، لا تتم معالجة بعض علب البريد.
  • لا يتم تحديث تقويمات المجلد العمومي

    لا يتم تحديث أداة Exchange تقويمات "المجلد العمومي". لمزيد من المعلومات حول كيفية تحديث تقويم "المجلد العمومي"، راجع الوثائق الخاصة بالأداة Outlook.
  • يمكنك تشغيل الأداة Outlook وأداة Exchange في نفس البيئة

    إذا قمت بتشغيل أداة Exchange على علبة بريد تم تحديثه مسبقاً بأداة Outlook، أو العكس بالعكس، تواجه أي آثار جانبية. ومع ذلك، إذا قمت بتشغيل أداة Exchange، هناك حاجة لا للمستخدمين بتشغيل الأداة Outlook بشكل منفصل.
  • تظهر رسائل تذكير الاجتماع عدم لاحقاً من المتوقع

    لا يتم تحديث الاجتماع عدم التذكيرات الخاصة بعلب البريد التي يتم تحديثها بواسطة أداة Exchange في حالة عدم اتصال Outlook إلى علبة البريد في وضع الاتصال. في هذه الحالة، تظهر رسائل تذكير ساعة واحدة لاحقاً من المتوقع.

    في حالة عدم اتصال Outlook في وضع الاتصال، عليك ضبط التذكيرات غير صحيحة لمواعيد التقويم عثور الأداة Outlook. مجلد البحث التذكيرات بالإضافة إلى ذلك، غير موجود في علبة البريد. ولذلك، لا يتم تحديث الأداة عناصر البريد الإلكتروني أو جهات الاتصال الأخرى التذكيرات.


    على سبيل المثال، لا يتم تحديث الأداة التذكير على عنصر البريد إلكتروني المتابعة في وقت في المستقبل. لا تحديث الأداة أيضا التذكير على عنصر مهمة له تذكير.
  • تلقيت رسالة إعلام بخطأ: "قادر على تثبيت لأنه تم الكشف عن الإصدارات السابقة من" أداة تحديث تقويم Microsoft Exchange ". الرجاء إزالة تثبيتها وتشغيل هذا الإعداد مرة أخرى "

    إذا قمت مسبقاً بتثبيت الإصدار 1.0 من أداة تحديث تقويم Exchange، يجب إلغاء تثبيت هذا الإصدار قبل تثبيت الإصدار 2.0 من أداة تحديث تقويم Exchange.

    تم توزيع الإصدار 1.0 من أداة تحديث تقويم Exchange كملف قابل للتنفيذ يتم استخراجه ذاتيا تحتوي حزم.msi اثنين (Msextmz.msi و Msextmzcfg.msi). يجب إزالة تثبيت حزم كلا قبل تثبيت الإصدار 2.0 من الأداة Exchange.

    في حالة استمرار مواجهة مشكلات عند تثبيت الإصدار 2.0 من الأداة Exchange، حاول إعادة تثبيت ثم إلغاء تثبيت الإصدار 1.0 من الأداة Exchange. القيام بذلك باستخدام حزم.msi بدلاً من استخدام ميزة " إضافة أو إزالة البرامج " في "لوحة التحكم". إعادة تشغيل جهاز الكمبيوتر، ثم قم بتثبيت الإصدار 2.0 من الأداة Exchange.

    إذا لم ينجح هذا الإجراء، قم باستخراج الثنائيات مباشرة من حزم.msi.
  • عندما تقوم بتشغيل أدوات التحديث Outlook أو Exchange، المواعيد تشغيل بواسطة ساعة واحدة على علب البريد التي تم فيها المنطقة الزمنية الرئيسية "نيوزيلاند-التوقيت الرسمي"

    تحدث هذه المشكلة إذا تحققت الحالات التالية:
    • تشغيل أدوات التحديث Outlook أو Exchange على كمبيوتر الذي يقوم بتشغيل نظام التشغيل Windows Vista.
    • المنطقة الزمنية المنزلية علب البريد التي يتم تحديثها هي "نيوزيلاند-التوقيت الرسمي".
    لحل هذه المشكلة، يجب تشغيل أدوات التحديث Outlook أو Exchange مقابل علب البريد مرة ثانية في أو بعد 1 كانون الثاني/يناير 2008.

    يحدث هذا السلوك لأن ذلك معلومات المنطقة الزمنية مؤشرات نظام التشغيل Windows Vista بشكل مختلف من إصدارات أخرى من Windows. إذا لم تقم بتشغيل أدوات التحديث Outlook أو Exchange مرة أخرى في أو بعد 1 كانون الثاني/يناير 2008، سيتم كافة المواعيد في أحداث التوقيت الصيفي الثاني إيقاف ساعة واحدة. أحداث التوقيت الصيفي الثاني يتضمن تواريخ من 16 مارس إلى 6 نيسان/أبريل 2008.

    إذا أردت عدم الانتظار حتى 1 كانون الثاني/يناير 2008 لتحديث تعيينات في أحداث التوقيت الصيفي الثاني، يمكنك تشغيل أدوات التحديث 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

    لاحظ أن بند "سيستيمباتشداتي" يحتوي على التاريخ "2/28/08." يجب أن يكون هذا التاريخ بالتنسيق MM/DD/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 - آخر مراجعة: 17‏/02‏/2017 - المراجعة: 2

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

تعليقات