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

المدونة · Mirko Peters

أتمتة تحسين التراخيص والتدقيق في Microsoft 365

By ·

مرحبًا بعودتكم إلى مدونة البودكاست! إذا سبق أن حدّقتم في فاتورة برامج Microsoft 365 الشهرية وتساءلتم لماذا تدفعون مقابل مقاعد لم يلمسها أحد منذ ستة أشهر، فأنتم بالتأكيد لستم وحدكم…

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

▶ BLOGAutomating LicenseOptimization and Audits…M365.FM
Titelbild: Automating License Optimization and Audits in Microsoft 365

مرحبًا بعودتكم إلى مدونة البودكاست! إذا سبق أن حدّقتم في فاتورة برامج Microsoft 365 الشهرية وتساءلتم لماذا تدفعون مقابل مقاعد لم يلمسها أحد منذ ستة أشهر، فأنتم بالتأكيد لستم وحدكم. فإدارة التراخيص من بين تلك النفقات التشغيلية الخفية التي تستنزف ميزانيات تكنولوجيا المعلومات بصمت، وتخلق في الوقت نفسه متاعب غير ضرورية في الامتثال والأمان. ولحسن الحظ، لدينا أدوات أتمتة قوية في متناول أيدينا. في هذا الدليل الشامل، سنستعرض كيفية تتبع التراخيص في Microsoft 365 وتعيينها وسحبها باستخدام PowerShell، وذلك للتحكم في التكاليف، وتبسيط عمليات التهيئة للموظفين الجدد، وضمان الامتثال الصارم عبر المستأجر بأكمله. وإذا كنتم تستمتعون بالتعمق في استراتيجيات الأتمتة التقنية، فتأكدوا من الاطلاع على حلقتنا ذات الصلة حول Run Your Full Stack Locally with .NET Aspire للمزيد من الرؤى حول سير عمل المطورين وأدواتهم.

مقدمة في أتمتة تحسين التراخيص والتدقيق

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

المتطلبات المسبقة وإعداد البيئة

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

الأنظمة المدعومة

يمكنك تشغيل النصوص البرمجية لإدارة Microsoft 365 على أنظمة Windows وmacOS على حد سواء. ويفضل معظم المسؤولين استخدام Windows 10 أو إصدار أحدث، بينما يمكن لمستخدمي Mac الاستفادة من PowerShell Core. تأكد دائمًا من أن نظام التشغيل لديك يدعم أحدث الحزم المعيارية. وإذا واجهت أخطاء في تكامل Web Account Manager (WAM) أو تعارضات في تبعيات المكونات عند الاتصال بالخدمات، فإن استخدام حلول مؤقتة مثل المفتاح DisableWAM يمكن أن يُبقي نصوصك البرمجية تعمل.

الأذونات والأدوار

الأمان أولوية قصوى. لا تشغّل أبدًا النصوص البرمجية الإدارية باستخدام حساب مستخدم عادي. تأكد من أن الهوية التي تنفذ النصوص تملك الأدوار المناسبة، مثل Global Administrator أو User Administrator أو License Administrator. والالتزام بمبدأ أقل الامتيازات يضمن أن بيانات اعتماد المسؤول لديك تحمل الأذونات الدقيقة اللازمة فقط لإجراء عمليات تدقيق التراخيص وتعييناتها.

قائمة التحقق من إعداد البيئة

  1. افتح Windows PowerShell بصلاحيات المسؤول.
  2. عيّن PowerShell Gallery كمستودع موثوق:
    Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
  3. ثبّت موفّر NuGet المطلوب إذا طُلب منك ذلك.
  4. اضبط سياسة تنفيذ النصوص البرمجية:
    Set-ExecutionPolicy RemoteSigned

تثبيت وحدات PowerShell الأساسية لإدارة Microsoft 365

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

نظرة عامة على الوحدات

  • Microsoft.Graph: الوحدة الحديثة الموحدة التي تحل محل الأدوات القديمة مثل MSOnline وAzureAD.
  • ExchangeOnlineManagement: ضرورية لحوكمة صناديق البريد، وتحويل صناديق البريد المشتركة، وتتبع تدفق البريد.
  • MicrosoftTeams: ضرورية لإدارة أعباء عمل التعاون وسياسات الاجتماعات.

خطوات التثبيت

يمكنك تثبيت الوحدات الحديثة الأساسية بتنفيذ الأوامر التالية في موجه PowerShell مرتفع الصلاحيات:

Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -Force
Install-Module -Name MicrosoftTeams -Scope CurrentUser -Force

تحقق دائمًا من تثبيتاتك باستخدام Get-InstalledModule للتأكد من أن الإصدارات المتعارضة لا تعطّل دفاتر التشغيل الآلية الخاصة بك.

الاتصال بـ PowerShell بمستأجر Microsoft 365 الخاص بك

إنشاء اتصال آمن وموثوق بالمستأجر هو الخطوة الحاسمة التالية. تتطلب معايير المصادقة الحديثة مناهج قوية، خاصة عند تشغيل النصوص البرمجية دون مراقبة أو المجدولة.

خيارات المصادقة

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

الاتصال بـ Graph والخدمات الأخرى

للاتصال بواجهة Microsoft Graph الخلفية لإدارة المستخدمين والتراخيص، استخدم الأمر التالي:

Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"

بالنسبة لأحمال العمل الخاصة بـ Exchange وإعدادات صناديق البريد، أنشئ جلستك باستخدام الأمر التالي:

Connect-ExchangeOnline

عند انتهاء السكربت من تنفيذ عمليات الدفعات، تذكّر إنهاء الجلسة عبر تشغيل Disconnect-ExchangeOnline أو Disconnect-MgGraph.

تدقيق المقاعد غير المستخدمة وجرد التراخيص

يبدأ تحسين التراخيص بالرؤية. لا يمكنك استرداد المقاعد إذا لم تكن تعرف من يستخدمها ومن تخلّى عنها. باستخدام PowerShell، يمكنك استخراج تقارير جرد شاملة تفصّل رموز SKU المعيّنة وأوقات آخر تسجيل دخول.

التحقق من رموز SKU المشترَكة

للتحقق من إجمالي التراخيص المشتراة في المستأجر مقابل الأعداد المتاحة، شغّل الأمر التالي:

Get-MgSubscribedSku | Select-Object SkuId, SkuPartNumber, @{Name="Total";Expression={$_.ConsolidatedStatus}}, @{Name="Assigned";Expression={$_.AssignedUnits}}

البحث عن المستخدمين غير النشطين

تحديد الحسابات التي لم تسجّل المصادقة خلال أكثر من 90 يومًا هو الطريقة الأسرع لخفض نفقات السحابة غير الضرورية. يمكنك تصفية قوائم المستخدمين للعثور على الحسابات الخاملة:

$Threshold = (Get-Date).AddDays(-90)
Get-MgGet-MgUser -All -Property Id, DisplayName, UserPrincipalName, SignInActivity | Where-Object { $_.SignInActivity.LastSignInDateTime -lt $Threshold }

يتيح لك تصدير هذه البيانات إلى ملف CSV عرض مقاييس واضحة لتوفير التكاليف على قيادة تكنولوجيا المعلومات قبل تنفيذ عمليات إزالة التراخيص بالجملة.

استخدام Set-MgUserLicense لتعيين التراخيص وسحبها

بعد أن تحدد المقاعد غير المستغلة بالشكل الكافي أو الموظفين الجدد الذين يحتاجون إلى التهيئة، يصبح الأمر Set-MgUserLicense آليتك الأساسية للتعديل.

تعيين التراخيص برمجيًا

لتعيين رمز SKU محدد لمنتج لمستخدم جديد، تُنشئ كائن تعيين ترخيص يحتوي على SkuId المستهدف:

$Params = @{
    AddLicenses = @(
        @{
            SkuId = "your-sku-guid-here"
        }
    )
    RemoveLicenses = @()
}
Set-MgUserLicense -UserId "alex.johnson@contoso.com" -BodyParameter $Params

سحب التراخيص غير المستخدمة

عند استرداد التراخيص من الحسابات الخاملة أو من الموظفين الذين غادروا المؤسسة، تعكس العملية بتمرير معرّف SKU إلى معامل المصفوفة RemoveLicenses، مما يضمن توقف مؤسستك عن دفع ثمن سعة سحابية غير مستخدمة فورًا.

أتمتة سير عمل تعيين التراخيص وإلغائها عند الانضمام والمغادرة

يُدخل تهيئة المستخدمين وإلغاؤها يدويًا تأخيرًا كبيرًا ومخاطر أمنية. من خلال كتابة سكربتات لسير عمل الانضمام والمغادرة، تضمن تخصيص التراخيص في اللحظة التي ينضم فيها الموظف، وسحبها فور مغادرته في اليوم نفسه.

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

أفضل ممارسات الأمان ومبدأ أقل الصلاحيات

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

  • أقل الصلاحيات: لا تمنح أبدًا صلاحيات مسؤول عام (Global Administrator) للحسابات الخدمية الآلية. احصر الأذونات بدقة فيما يحتاجه السكربت فعليًا.
  • أمان بيانات الاعتماد: لا تخزّن كلمات مرور نصية واضحة داخل السكربتات أبدًا. استخدم Azure Key Vault أو الهويات المُدارة أو مصادقة الشهادات.
  • التسجيل الشامل: طبّق كتل try/catch قوية وسجّل خطوات تنفيذ السكربت في سجلات محلية أو سحابية لضمان تتبع كامل.

استكشاف أخطاء التراخيص والاتصال الشائعة وإصلاحها

حتى المسؤولون ذوو الخبرة يواجهون أحيانًا عوائق عند تشغيل سكربتات أتمتة Microsoft 365. إن فهم كيفية التعامل مع هذه الأخطاء سيوفر عليك ساعات من الإحباط.

  1. أخطاء رفض الإذن: تحقّق من أن الحساب المنفِّذ يملك أدوار الدليل المطلوبة في Azure AD، وأن اتصال Graph طلب نطاقات الموافقة الصحيحة.
  2. إخفاقات تعيين الترخيص: تأكد من أن المستخدم المستهدف لديه "موقع الاستخدام" (Usage Location) مُعدّ. سترفض Microsoft 365 تعيينات الترخيص إذا كان حقل الدولة لدى المستخدم فارغًا.
  3. تعارض الوحدات: إذا فشلت الأوامر بسبب تعارض إصدارات الوحدات، فاحذف الوحدات القديمة بالكامل (مثل MSOnline) ووحّد بيئتك على Microsoft Graph SDK الحديث.

الخاتمة

تُسهم أتمتة تحسين تراخيص Microsoft 365 ومراجعتها في سدّ الفجوة بين إدارة تقنية المعلومات الفعّالة والإدارة المالية الذكية. فباستخدام PowerShell وأوامر مثل Set-MgUserLicense، يمكنك القضاء على الإنفاق غير المجدي على البرمجيات، وفرض الامتثال الأمني الصارم، وتبسيط سير عمل إدارة المستخدمين عبر مؤسستك. وإذا كنت ترغب في توسيع آفاقك التقنية أكثر نحو الأدوات الحديثة وإدارة البنية التحتية، فلا تفوّت حلقتنا ذات الصلة حول كيفية تشغيل كامل المكدّس محليًا باستخدام .NET Aspire. كن استباقيًا، واحرص على تأمين نصوصك البرمجية، وحوّل مستأجر Microsoft 365 الخاص بك إلى محرك متناغم ومحسّن التكلفة!

Entities in this article

PowerShell Microsoft 365 Least privilege Automation .NET Aspire Global Administrator Compliance Burnout Microsoft Graph NuGet

Related articles

RSS