M365Con 2027 – مؤتمر مجاني عبر الإنترنت · 11–22 Jan 2027 · 120 sessions→ m365con.net

المدونة · Mirko Peters

الاتصال بـ Exchange Online PowerShell: دليل خطوة بخطوة

By ·

الاتصال بـ Exchange Online PowerShell باستخدام Connect-ExchangeOnline: المتطلبات، وتسجيل الدخول التفاعلي، والمصادقة متعددة العوامل، والخيارات للشركاء والتشغيل غير المراقب، وحلول الأخطاء.

Automatically translated with AI from the original post. Read the English original

للاتصال بـ Exchange Online PowerShell، حمّل الوحدة ExchangeOnlineManagement ثم شغّل Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com. تفتح نافذة تسجيل دخول، فتُدخل كلمة المرور وتوافق على مطالبة المصادقة متعددة العوامل، ويصبح الصدفة متصلة. تستهدف هذه المقالة مسؤولي Exchange وMicrosoft 365 الذين يحتاجون إلى الخطوات الدقيقة، والخيارات للوصول عبر الشركاء والتشغيل غير المراقب، وقائمة مختصرة بالحلول عند فشل الاتصال. وهي تتبع الوثائق الحالية لـ Microsoft، لذلك تفترض الأوامر هنا استخدام المصادقة الحديثة وعدم وجود جلسة PowerShell عن بُعد.

النقاط الرئيسية

  • للاتصال بـ Exchange Online PowerShell، حمّل الوحدة وشغّل Connect-ExchangeOnline مع حساب المسؤول الخاص بك بتنسيق اسم المستخدم الأساسي (UPN).
  • يعمل تسجيل الدخول التفاعلي مع المصادقة متعددة العوامل ومن دونها، لذلك لا تحتاج إلى حل بديل منفصل للمصادقة متعددة العوامل.
  • لم تعد المصادقة الأساسية وطريقة New-PSSession القديمة مدعومة، لذا تحتاج النصوص البرمجية التي تعتمد عليهما إلى إعادة كتابة.
  • استخدم Get-AcceptedDomain كاختبار سريع بعد الاتصال، وأنهِ الجلسة دائماً باستخدام Disconnect-ExchangeOnline.
  • ينبغي للنصوص البرمجية غير المراقبة أن تستخدم مصادقة التطبيق فقط أو هوية مُدارة بدلاً من كلمة مرور مخزّنة.

ما تحتاج إليه قبل الاتصال

يأتي أمر الاتصال من الوحدة، لذا يجب تثبيت الوحدة أولاً. إذا لم تفعل ذلك بعد، فثبّتها من PowerShell Gallery باستخدام Install-Module -Name ExchangeOnlineManagement. تُسمّى الوحدة الإصدار V3 في وثائق Microsoft. تغطي Microsoft كلاً من Windows PowerShell 5.1 وPowerShell 7. وفي PowerShell 7 تحتاج إلى الإصدار 2.0.4 من الوحدة أو أحدث.

هناك أربعة أمور أخرى تحدد ما إذا كان الاتصال سينجح:

  • الأذونات. يحدد التحكم في الوصول المستند إلى الأدوار الأوامر التي يمكنك تشغيلها بعد اتصالك. الاتصال ليس الجزء الصعب، بل تشغيل الأمر الصحيح. لدى Microsoft صفحة لمعرفة الأذونات التي يحتاجها أمر معين، ويستحق حفظها في المفضلة.
  • وصول PowerShell للحساب. يجب أن يُسمح للحساب باستخدام Exchange Online PowerShell. إذا عطّل أحد المسؤولين هذه الميزة لمستخدمك، فإن تسجيل الدخول ينجح لكن الاتصال لا ينجح.
  • الشبكة. يجب أن يكون المنفذ TCP 80 مفتوحاً بين حاسوبك وMicrosoft 365.
  • مسار ملف تعريف نظيف. تقول Microsoft إن أوامر الاتصال قد تفشل إذا احتوى مسار ملف تعريف المستخدم على أحرف خاصة في PowerShell مثل $. استخدم حساباً مختلفاً إذا كان حسابك يحتوي على ذلك.

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

كيفية الاتصال بـ Exchange Online PowerShell خطوة بخطوة

هذه هي الطريقة التفاعلية القياسية. تعمل بالطريقة نفسها في Windows PowerShell 5.1 وPowerShell 7، مع المصادقة متعددة العوامل أو من دونها.

  1. افتح نافذة PowerShell جديدة. تتجنب النافذة الجديدة تعارضات التجميعات (assembly conflicts) مع وحدات أخرى ربما تكون قد حمّلتها سابقًا في الجلسة.
  2. حمّل الوحدة باستخدام Import-Module ExchangeOnlineManagement. إذا كانت الوحدة مثبتة مسبقًا، تشير Microsoft إلى أنه يمكنك عادةً تخطي هذه الخطوة والانتقال مباشرةً إلى أمر الاتصال، لأن PowerShell يحمّل الوحدة تلقائيًا.
  3. شغّل Connect-ExchangeOnline -UserPrincipalName admin@contoso.com، ولكن باستخدام حسابك الخاص بصيغة UPN. في بعض المؤسسات يمكنك حذف -UserPrincipalName وستظهر لك مطالبة بإدخال الحساب. إذا فشل ذلك، أضف المعامل.
  4. أدخل كلمة المرور في نافذة تسجيل الدخول، ثم اختر Sign in.
  5. إذا كان حسابك يستخدم المصادقة متعددة العناصر (MFA)، فأدخل رمز التحقق واختر Verify. يُرسَل الرمز بالطريقة التي هيّأتها، مثل الرسالة النصية أو Microsoft Authenticator. في PowerShell 7 يستخدم تسجيل الدخول المتصفح افتراضيًا.
  6. انتظر ظهور الشعار الترحيبي (banner). عدم ظهور أي خطأ يعني أنك متصل.

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

إذا كنت لا تريد ظهور شعار الترحيب في سجل السكربت، فأضف -ShowBanner:$false. وإذا أردت أن يعرض Get-Help المساعدة الخاصة بأوامر Exchange Online، فأضف -LoadCmdletHelp. منذ الإصدار 3.7.0 من الوحدة لم تعد تلك المساعدة تُحمَّل افتراضيًا، وهو أمر يفاجئ من يحدّث الوحدة ثم يجد أن Get-Help لا يعيد تقريبًا أي نتائج.

طرق أخرى للاتصال: PowerShell 7 والشركاء والسحابات

تسرد الوثائق عدة صيغ مختلفة. اختر الصيغة التي تناسب وضعك.

PowerShell 7 بدون متصفح. شغّل Connect-ExchangeOnline -Device. يعرض الأمر رسالة تطلب منك فتح https://microsoft.com/devicelogin وإدخال رمز. تنفذ ذلك على أي جهاز آخر، وتسجل الدخول وتؤكد، ثم تكتمل الجلسة الأصلية اتصالها. تعمل هذه الطريقة مع المصادقة متعددة العناصر وبدونها، وهي مفيدة على الخوادم أو أجهزة Linux التي لا تحتوي على واجهة سطح مكتب.

PowerShell 7 مع بيانات اعتماد مضمّنة. يعمل الأمر Connect-ExchangeOnline -UserPrincipalName admin@contoso.com -InlineCredential مع الحسابات التي لا تستخدم MFA. تطلب معظم المؤسسات المصادقة متعددة العناصر للمسؤولين، لذلك ستستخدم هذه الطريقة نادرًا.

Windows PowerShell 5.1 مع كائن بيانات اعتماد. بالنسبة للحسابات التي لا تستخدم MFA يمكنك تشغيل $Credential = Get-Credential أولًا، ثم Connect-ExchangeOnline -Credential $Credential. تذكر Microsoft أنه إذا فشل ذلك، فينبغي استخدام -UserPrincipalName بدلًا منه.

مستأجرو العملاء بصفتك شريكًا. يضيف شركاء مزود الحلول السحابية (Cloud Solution Provider) والمسؤولون الضيوف المعامل -DelegatedOrganization، مثل Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com. تشير صفحة Microsoft إلى برنامج Cloud Solution Provider وإلى امتيازات المسؤول المفوَّض الدقيقة (GDAP) فيما يخص جانب الأذونات.

السحابات الحكومية والإقليمية. يحدد المعامل -ExchangeEnvironmentName البيئة المستخدمة. القيمة الافتراضية هي O365Default، التي تشمل Microsoft 365 وGCC. القيم الموثقة للبيئات الأخرى هي O365USGovGCCHigh وO365USGovDoD وO365GermanyCloud وO365China.

سكربتات تعمل دون تدخل. لا تخزّن كلمة مرور المسؤول داخل السكربت. توثّق Microsoft خيارين أفضل. الهوية المُدارة، مثل Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"، مناسبة للسكربتات التي تعمل في Azure. أما المصادقة للتطبيق فقط باستخدام شهادة فمناسبة لبقية الحالات. معامل بصمة الشهادة مدعوم على Windows فقط. يتطلب الإعداد تسجيل تطبيق في Microsoft Entra ID، وإذن التطبيق Exchange.ManageAsApp مع موافقة المسؤول، وشهادة، ودورًا مدعومًا للتطبيق مثل Exchange Administrator. توصي Microsoft بمبدأ أقل الامتيازات، لذا لا تمنح التطبيق دور Global Administrator إلا إذا لم يكن هناك مفر من ذلك. اتبع مقالة Microsoft المستقلة حول المصادقة للتطبيق فقط بدلًا من الاكتفاء بنسخة مختصرة منها.

في خدمة Windows، أضف -SkipLoadingFormatData لتجنّب الأخطاء. وإذا ظهرت أخطاء تذكر Web Account Manager، فإن إصدار الوحدة 3.7.2 أو أحدث يتضمن المعامل -DisableWAM لهذا الغرض.

حافظ على خفة السكربتات: قيّد ما تستورده

عادةً ما يستورد الاتصال جميع أوامر Exchange Online التي يُسمح لك باستخدامها. هذا مقبول للاطلاع السريع على صندوق بريد، لكن السكربت الذي يحتاج إلى ثلاثة أوامر لا يحتاج إلى كلها. تقدم صفحة الوحدة في Microsoft نصيحة محددة هنا. استدعاء Connect-ExchangeOnline وDisconnect-ExchangeOnline بشكل متكرر ضمن الجلسة نفسها قد يسبب تسريبًا في الذاكرة. الحل هو الاتصال مرة واحدة لكل سكربت، واستخدام المعامل -CommandName لاستيراد الأوامر التي تحتاجها فقط.

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

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

تحقق من الاتصال وفصله بشكل سليم

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

لعرض تفاصيل اتصالاتك، استخدم Get-ConnectionInformation. تشير صفحة الوحدة في Microsoft إلى أن Get-PSSession لا يُرجع أي نتيجة مفيدة لهذه الاتصالات القائمة على REST، لذا فإن السكربتات القديمة التي تتحقق من Get-PSSession تحتاج إلى تعديل.

عند الانتهاء، نفّذ Disconnect-ExchangeOnline. أضف -Confirm:$false في السكربتات لتخطي رسالة التأكيد. تحذّر مقالة الاتصال في Microsoft من أن إغلاق النافذة دون قطع الاتصال قد يستنزف الجلسات المتاحة لديك، فتضطر إلى الانتظار حتى تنتهي صلاحيتها.

أصلح أكثر أخطاء الاتصال شيوعًا

معظم حالات الفشل تعود إلى قائمة قصيرة من الأسباب. تحقق منها بالترتيب من الأعلى إلى الأسفل.

  • اسم المستخدم أو كلمة المرور غير صحيحة. أعد الخطوات وتحقق من كليهما. قد يبدو هذا بديهيًا، لكن تحقق من تنسيق UPN أولًا.
  • وصول PowerShell معطّل للحساب. يستطيع المسؤول تفعيله. لدى Microsoft مقالة منفصلة حول تفعيل أو تعطيل الوصول إلى Exchange Online PowerShell.
  • المنفذ 80 محظور. اطلب من فريق الشبكة السماح بالمنفذ TCP 80 إلى Microsoft 365.
  • حساب متحد مع مزوّد هوية غير قابل للوصول. إذا لم يكن مزوّد الهوية (IDP) أو خدمة STS متاحًا للعامة، تقترح Microsoft استخدام حساب غير متحد داخل Microsoft 365 للاتصال.
  • "The term 'Update-ModuleManifest' is not recognized". يحتاج الاتصال إلى PowerShellGet والاعتماد عليه PackageManagement. حدّث الاثنين وأعد تشغيل PowerShell.
  • "تعذّر تحميل الملف أو المجمع 'System.IdentityModel.Tokens.Jwt'". تتعارض الوحدة النمطية مع وحدة أخرى في الجلسة نفسها. اتصل من نافذة Windows PowerShell جديدة قبل استيراد أي شيء آخر.
  • أخطاء في نافذة تفتحها خدمة أو مهمة مجدولة. جرّب -SkipLoadingFormatData.

إذا لم تنطبق أي من هذه الحالات، فإن إصدار الوحدة النمطية هو المشتبه به التالي. شغّل Update-Module -Name ExchangeOnlineManagement في النطاق نفسه الذي ثبّتّها به، ثم أعد المحاولة في نافذة جديدة.

الأخطاء الشائعة

  • استخدام المصادقة الأساسية (Basic authentication) أو New-PSSession. توثّق Microsoft هذه الطرق للاطلاع التاريخي فقط، وتذكر أنها لم تعد مدعومة. أي نص برمجي ما زال يُنشئ جلسة بهذه الطريقة يجب نقله إلى Connect-ExchangeOnline.
  • إغلاق النافذة بدلاً من قطع الاتصال. قد يستنفد ذلك جلساتك المتاحة. اجعل Disconnect-ExchangeOnline آخر سطر في كل نص برمجي.
  • وضع كلمة مرور بنص واضح داخل نص برمجي. استخدم بدلاً من ذلك هوية مُدارة (managed identity) أو شهادة.
  • استيراد وحدات أخرى أولاً. قد يؤدي التعارض مع وحدة أخرى إلى إفشال تسجيل الدخول. اتصل بـ Exchange Online أولاً، أو استخدم نافذة جديدة.
  • افتراض أن الاتصال يعني الإذن. إذا ظهر أن أحد الأوامر الفرعية "غير معروف" بعد الاتصال، فهذا يعني أن دورك لا يتضمنه. هذه مسألة RBAC وليست مشكلة في الاتصال.

مواضيع ذات صلة للاستكشاف

  • تثبيت الوحدة النمطية وتحديثها: يعتمد الاتصال على الوحدة النمطية الصحيحة وإصدار PowerShell المناسب، لذا اقرأ متطلبات وحدة Exchange Online PowerShell النمطية قبل نشرها على فريق.
  • العثور على أذونات أمر فرعي: توضح Microsoft كيفية معرفة الدور الذي يحتاجه أمر Exchange فرعي محدد.
  • الاتصال بـ Security & Compliance PowerShell: توفر الوحدة النمطية نفسها الأمر Connect-IPPSSession، وهو غير متاح في PowerShell 7 على Linux أو macOS.
  • الأتمتة غير المُشرف عليها: المصادقة الخاصة بالتطبيق فقط والهويات المُدارة هما الطريقة الآمنة لتشغيل نصوص Exchange المجدولة.
  • المهام المجمّعة الكبيرة: للأوامر الفرعية المستندة إلى REST مهلة زمنية مدتها 15 دقيقة، لذا قسّم تحديثات الأعضاء الكبيرة إلى دفعات.

الخطوة التالية

للاتصال بـ Exchange Online PowerShell بشكل موثوق، ابدأ بنافذة جديدة، وشغّل Connect-ExchangeOnline -UserPrincipalName باستخدام حساب المسؤول الخاص بك، واختبر باستخدام Get-AcceptedDomain، ثم اقطع الاتصال عند الانتهاء. بعد ذلك خطّط لنصوصك غير المُشرف عليها حول هوية مُدارة أو شهادة، حتى لا يضطر أحد إلى كتابة كلمة مرور أو تخزينها.

Entities in this article

Exchange Online PowerShell PowerShell

Related articles

RSS