لماذا يتأخر تنفيذ سكربتات PowerShell في Intune؟

🎯 Microsoft Intune PowerShell Script Execution

عند إنشاء سكربت بورشيل أساسي (PowerShell Platform Script) داخل مايكروسوفت إنتون (Microsoft Intune) لمعالجة مشكلة تشغيلية على جهاز ما، يكون التوقع المنطقي أن يتم تنفيذ السكربت فورًا بعد تعيينه. لكن الواقع التقني مختلف تمامًا. تأخير تنفيذ سكربتات PowerShell في إنتون ليس عشوائيًا، ولا يرتبط بخلل في الخدمة، بل يعتمد على آليات داخلية محددة في امتداد إدارة إنتون (Intune Management Extension (IME)) تتحكم في متى وكيف يتم تقييم السياسات وتنفيذها. في هذا المقال سنشرح بدقة ما الذي يسبب التأخير، ولماذا لا يؤدي الضغط على زر المزامنة (Sync) إلى تشغيل السكربت فورًا.

1️⃣ What Happens When a PowerShell Script Is Deployed in Intune? — ماذا يحدث عند نشر سكربت بورشيل في إنتون؟

📖 عند رفع سكربت PowerShell (بورشيل) وتعيينه لمجموعة أجهزة، لا يتلقى الجهاز إشارة تنفيذ فورية.
يُخزَّن السكربت في الخدمة السحابية لـ Intune، ثم ينتظر الجهاز محفزًا يطلق دورة تقييم جديدة داخل امتداد إدارة إنتون.
📋 المراحل بعد التعيين:
  1. يتم تسجيل السياسة في الخدمة السحابية لـ Intune.
  2. ينتظر الجهاز "محفزًا" (Trigger) يطلق دورة تقييم جديدة داخل IME.
  3. عند تحقق الشرط، يبني IME طلب السياسات (PolicyRequest) ويرسله إلى خدمة Intune.
  4. يستلم IME السياسات على شكل كائنات مثل كائن السياسة (EmsPolicy) ثم يصفّيها ويقرر تنفيذها وفق منطق الجدولة.
🔑 نصيحة أساسية: يعمل IME وفق نموذج موجّه بالأحداث (Event-Driven) وليس موجّهًا بالدفع (Push-Driven)؛ أي أن الخدمة لا تبقى في اتصال حي دائم بانتظار تغييرات جديدة، بل تعتمد على مؤقتات داخلية وأحداث نظام مثل تسجيل الدخول أو إعادة تشغيل الخدمة.
قمت بتعيين سكربت لمعالجة إعداد سجل النظام (Registry) على جميع الأجهزة. كان الجهاز يعمل لكنه على شاشة تسجيل الدخول، فلن يُنفَّذ السكربت حتى يحدث تسجيل دخول مستخدم، أو ينتهي مؤقت الـ 8 ساعات، أو تُعاد تشغيل خدمة IME. أمنيًا، هذا التصميم يقلل الحمل المستمر على الخدمة والشبكة ويمنع التنفيذ غير المنضبط الذي قد يسبب اضطرابات على الأجهزة.

2️⃣ The Role of Intune Management Extension in Execution — دور امتداد إدارة إنتون في التنفيذ

📖 امتداد إدارة إنتون (Intune Management Extension (IME)) هو المكوّن المحلي المسؤول عن تشغيل سكربتات PowerShell وتطبيقات Win32 داخل إنتون.
يعمل كخدمة ويندوز (Windows Service) ضمن سياق النظام (System Context) أي بصلاحيات أعلى من صلاحيات المستخدم.
📋 المحفزات الداخلية التي ينتظرها IME:
  • انتهاء مؤقت التقييم (Timer Expiration).
  • تغيّر جلسة المستخدم (Session Change).
  • إعادة تشغيل الخدمة (Service Restart).

داخل منطق IME توجد دالة باسم OnSessionChange(SessionChangeDescription changeDescription) تستجيب لأحداث مثل تسجيل دخول الجلسة (SessionLogon) وتسجيل خروج الجلسة (SessionLogoff). وعند حدوث SessionLogon تحديدًا، قد يطلق IME مسار تقييم سكربتات PowerShell فورًا بدل انتظار المؤقت.

جهاز بقي 6 ساعات دون تنفيذ السكربت. بمجرد تسجيل دخول المستخدم، طبع IME في السجلات سطرًا مشابهًا لـ [PowerShell] Request PS Scripts for user logon، وخلال دقيقة تم تنفيذ السكربت بنجاح.
مثلما لا يفتح الموظف صندوق بريده كل ثانية بل ينتظر إشعار رسالة جديدة أو موعدًا محددًا للمراجعة، كذلك IME لا يراقب السحابة باستمرار بل ينتظر حدثًا (تسجيل الدخول) أو موعدًا (المؤقت) لبدء مراجعة السياسات.
خلاصة أساسيات التنفيذ:
  • نشر السكربت في إنتون لا يعني تنفيذًا فوريًا على الجهاز.
  • IME هو الوكيل المحلي المسؤول عن تشغيل السكربتات والتطبيقات.
  • النموذج موجّه بالأحداث ويعتمد على المؤقتات وإشعارات النظام.
  • دالة OnSessionChange تستجيب لتسجيل الدخول والخروج مباشرة.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Microsoft Intuneمايكروسوفت إنتونخدمة سحابية لإدارة الأجهزة والسياسات.
Intune Management Extension (IME)امتداد إدارة إنتونالوكيل المحلي الذي ينفذ السكربتات والتطبيقات.
PowerShellبورشيللغة سكربتات مايكروسوفت لأتمتة المهام.
Event-Drivenموجّه بالأحداثنموذج تنفيذ يعتمد على الأحداث والمؤقتات وليس الدفع الفوري.
PolicyRequestطلب السياساتطلب يرسله الجهاز لاستلام السياسات من السحابة.
EmsPolicyكائن السياسةكائن يمثل سياسة سكربت داخل نظام إنتون.
System Contextسياق النظامتشغيل بصلاحيات النظام الكاملة دون حاجة لمستخدم.
Win32 Appsتطبيقات ويندوز 32تطبيقات ويندوز التقليدية التي يديرها IME.

1️⃣ Why Is Execution Tied to User Logon? — لماذا يرتبط التنفيذ بعملية تسجيل الدخول؟

📖 سكربتات سياق المستخدم (User Context) تتطلب وجود هوية مستخدم صالحة للتنفيذ، أي رمز أمان المستخدم (User Token).
عندما يكون الجهاز على شاشة تسجيل الدخول، لا توجد جلسة مستخدم نشطة ولا رمز مستخدم يمكن للسكربت الارتباط به.
📋 متى يُنفَّذ كل نوع من السكربتات؟
  • سكربتات سياق الجهاز (Device Context) يمكنها العمل في الخلفية لأنها تعمل بصلاحيات النظام.
  • سكربتات سياق المستخدم تتطلب تسجيل دخول حقيقيًا للجلسة حتى يتوفر الرمز الأمني.
  • عند تسجيل الدخول يرسل مدير التحكم في الخدمات (Service Control Manager) إشعارًا إلى IME بحدوث SessionLogon.
  • عندها يبدأ IME دورة تقييم جديدة فورًا وقد يطلب السياسات وينفّذ السكربت.
تم تعيين سكربت لتعديل إعدادات أوتلوك (Outlook) لكل مستخدم. بقي الجهاز 8 ساعات دون تنفيذ لأن المستخدم لم يسجل الدخول، وبمجرد تسجيل الدخول تم التنفيذ خلال أقل من دقيقة لأن رمز المستخدم أصبح متاحًا.

2️⃣ Where Does the 8-Hour Timer Come From? — من أين يأتي مؤقت الـ 8 ساعات؟

📖 داخل إضافة سكربتات PowerShell (PowerShell Script Plugin) في IME يوجد مؤقت مضبوط على 28,800,000 مللي ثانية، أي ما يعادل ثماني ساعات.
هذه القيمة تمثل دورة التقييم الافتراضية لسكربتات PowerShell عندما تكون السياسات موجودة.

المهم أن تفهم أن هذا ليس استطلاعًا دوريًا (Polling)؛ أي أن IME لا "يفحص كل دقيقة"، بل "ينتظر" حتى تنتهي الدورة ثم يبدأ التقييم. وإذا تم تعيين سكربت جديد بين دورتين، فلن يعيد IME التقييم فورًا إلا إذا حدث محفز آخر مثل SessionLogon أو إعادة تشغيل الخدمة.

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

3️⃣ Does Restarting the IME Service Trigger Execution? — هل تؤدي إعادة تشغيل خدمة IME إلى التنفيذ؟

📖 نعم، إعادة تشغيل خدمة امتداد إدارة إنتون تُعد محفزًا صريحًا.
بدء الخدمة من جديد يعيد تهيئة أعباء العمل (Workloads) ويؤدي غالبًا إلى بدء دورة تقييم جديدة.
🔑 نصيحة أساسية: استخدم إعادة تشغيل الخدمة بحذر، لأنها قد تتداخل مع عمليات أخرى مثل نشر تطبيقات Win32 أو عمليات التقييم المطلوبة للأجهزة.
تنفيذ أمر مثل Restart-Service IntuneManagementExtension ضمن سياسة دعم معتمدة قد يؤدي إلى بدء تقييم فوري للسكربتات بدل انتظار المؤقت.

4️⃣ Do WNS Notifications Wake Up IME for Scripts? — هل توقظ إشعارات WNS خدمة IME؟

📖 لا. خدمة إشعارات ويندوز (Windows Notification Service (WNS)) تُستخدم لتفعيل أعباء معينة في سيناريوهات محددة، لكنها لا تُعتبر محفزًا مباشرًا لبدء دورة تقييم عبء عمل PowerShell (PowerShell Workload).
📋 اعتماد IME الفعلي:
  • المؤقت — انتهاء الدورة الزمنية.
  • تغيّر الجلسة — Session Change.
  • إعادة تشغيل الخدمة — Service Restart.
حتى لو استقبل الجهاز إشعارًا لتحديث تطبيق، فهذا لا يعني أن إضافة سكربتات PowerShell سيعاد تقييمها في اللحظة نفسها.
مثل جرس المدرسة: لا تنطلق الحصة إلا عند رنين الجرس (حدث محدد) أو انقضاء الوقت المحدد (المؤقت)، وليست الشائعات عن قرب الحصة كافية لإطلاقها. كذلك WNS لا "يقرع الجرس" لسكربتات PowerShell.
خلاصة محفزات التنفيذ:
  • تسجيل دخول المستخدم هو أقوى محفز لإطلاق دورة تقييم سكربتات سياق المستخدم.
  • مؤقت الـ 8 ساعات هو دورة التقييم الافتراضية.
  • إعادة تشغيل خدمة IME محفز صريح لكنه قد يتداخل مع عمليات أخرى.
  • إشعارات WNS لا توقظ إضافة سكربتات PowerShell مباشرة.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
User Contextسياق المستخدمتشغيل السكربت بهوية المستخدم المسجل دخوله.
Device Contextسياق الجهازتشغيل السكربت بصلاحيات النظام دون حاجة لمستخدم.
User Tokenرمز المستخدمهوية أمنية تسمح بتشغيل سكربتات سياق المستخدم.
SessionLogonتسجيل دخول الجلسةحدث نظام يطلق دورة تقييم جديدة في IME.
Service Control Managerمدير التحكم في الخدماتمكوّن ويندوز يرسل إشعارات تغيّر الجلسة.
PowerShell Script Pluginإضافة سكربتات بورشيلالمكوّن الذي يحتوي مؤقت التقييم ومحرك التنفيذ.
Pollingاستطلاع دوريفحص متكرر لا يمارسه IME بل ينتظر المؤقتات.
WNSخدمة إشعارات ويندوزخدمة إشعارات لا تُعد محفزًا مباشرًا لسكربتات PowerShell.

1️⃣ Why Doesn't the Sync Button Execute the Script? — لماذا لا يؤدي زر المزامنة إلى تنفيذ السكربت؟

📖 زر المزامنة (Sync) في إنتون أو على الجهاز يتواصل أساسًا مع طبقة إدارة الأجهزة المحمولة (MDM Stack) عبر عميل بروتوكول إدارة الأجهزة المحمولة (OMA-DM Client).
بينما سكربتات PowerShell من نوع السكربتات الأساسية تعمل داخل امتداد إدارة إنتون، وهو مكوّن منفصل ومسار مروري منفصل تمامًا.
📋 بمعنى آخر:
  • زر المزامنة يعالج سياسات إدارة الأجهزة التقليدية.
  • عبء عمل PowerShell داخل IME له دورة ومحفزات مختلفة.
  • لذلك الضغط على زر المزامنة لا يستدعي عبء عمل PowerShell مباشرة ولا "يوقظ" إضافة السكربتات.
قمت بالضغط على زر المزامنة عشر مرات متتالية دون أي تنفيذ. عند تسجيل الخروج ثم الدخول (Logoff/Logon) تم التنفيذ فورًا لأن حدث SessionLogon هو الذي حفّز IME.

2️⃣ What Happens Inside the PowerShell Workload During Evaluation? — ما الذي يحدث داخل عبء عمل بورشيل أثناء التقييم؟

📖 عند بدء التقييم، يمر IME بسلسلة من الخطوات المنظمة لبناء الطلبات واستلام السياسات وتصفيتها واتخاذ قرار التنفيذ.
وتُدار عملية الجدولة عبر مدير جدولة مخصص يتحقق من التوقيت وإعادة المحاولة.
📋 خطوات التقييم داخل IME:
  1. بناء PolicyRequest وإرساله إلى خدمة إنتون.
  2. استلام السياسات ككائنات EmsPolicy.
  3. تمرير السياسات عبر دالة تصفية السياسات (FilterPolicies()) لتصفية ما ينطبق على السياق الحالي.
  4. تشغيل دالة معالجة السياسات (ProcessPolicies()) لاتخاذ قرار التنفيذ.
  5. قيام مدير الجدولة (Schedule Manager) بفحص تاريخ التنفيذ وإعادة المحاولة.
📋 ما يتحقق منه مدير الجدولة:
  • هل السكربت يُنفَّذ لمرة واحدة (Run Once
  • هل تم تنفيذه سابقًا؟
  • هل تجاوز عدد المحاولات (Retry Count
  • هل حان وقت التنفيذ الآن؟
سكربت من نوع Run Once لن يعاد تنفيذه عند كل تسجيل دخول، بل مرة واحدة فقط ما لم يتغير أو يعاد تعيينه بطريقة تعيد إدخاله ضمن شروط الجدولة.

3️⃣ Why Does the Portal Seem Instant While the Device Isn't? — لماذا تبدو البوابة فورية بينما الجهاز ليس كذلك؟

📖 بوابة إنتون غالبًا تعرض حالة التعيين (Assignment State) بسرعة، لكنها لا تعني حالة التنفيذ الفعلي (Execution State) في اللحظة نفسها.
📋 من منظورين مختلفين:
  • من منظور السحابة: السياسة معيّنة ✔
  • من منظور الجهاز: لم يبدأ IME دورة التقييم بعد ✖

هذا الفرق بين حالة السحابة (Cloud State) ودورة تقييم الجهاز (Device Evaluation Cycle) هو السبب الرئيسي في الالتباس، خصوصًا عند نشر سكربتات عاجلة تتوقع تنفيذًا فوريًا.

قد ترى في البوابة أن السكربت "Assigned" منذ ساعات، بينما الجهاز لم ينفذه بعد لأنه ينتظر محفزًا مناسبًا أو انتهاء المؤقت.
مثل طلب وجبة عبر تطبيق التوصيل: يظهر الطلب فورًا عندك "تم الاستلام" (حالة السحابة)، لكن الوجبة لا تصل إلا عندما يبدأ المطعم تجهيزها فعليًا ثم يتحرك السائق (دورة تقييم الجهاز).
خلاصة دورة التقييم:
  • زر المزامنة يتعامل مع مسار إدارة الأجهزة المنفصل عن مسار سكربتات PowerShell.
  • التقييم يمر بخطوات منظمة تبدأ بالطلب وتنتهي بالجدولة.
  • مدير الجدولة يتحقق من شروط التنفيذ مثل "لمرة واحدة" وإعادة المحاولة.
  • حالة التعيين في البوابة لا تعني حدوث التنفيذ الفعلي على الجهاز.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Syncالمزامنةزر يعالج سياسات إدارة الأجهزة التقليدية.
MDM Stackطبقة إدارة الأجهزة المحمولةالمسار الذي تعمل عليه السياسات التقليدية.
OMA-DM Clientعميل بروتوكول OMA-DMالعميل الذي يتواصل مع طبقة إدارة الأجهزة.
FilterPolicies()تصفية السياساتدالة تختار السياسات المنطبقة على السياق الحالي.
ProcessPolicies()معالجة السياساتدالة تتخذ قرار التنفيذ بعد التصفية.
Schedule Managerمدير الجدولةمكوّن يتحقق من التوقيت وعدد المحاولات.
Run Onceتنفيذ لمرة واحدةسكربت يُنفَّذ مرة واحدة فقط.
Cloud Stateحالة السحابةحالة التعيين في البوابة دون تنفيذ فعلي.

1️⃣ What Is the Practical Takeaway When Deploying a New Script? — ما الخلاصة العملية عند نشر سكربت جديد؟

📖 عند نشر سكربت جديد، توقع التنفيذ عند تحقق أحد المحفزات التالية بدلًا من انتظار تنفيذ فوري غير مشروط.
فهم هذه المحفزات يجعل سلوك التنفيذ متوقعًا وقابلًا للتخطيط.
📋 المحفزات المتوقعة بعد نشر سكربت جديد:
  • تسجيل دخول المستخدم — SessionLogon.
  • إعادة تشغيل الجهاز — قد تتضمن إعادة تشغيل IME.
  • إعادة تشغيل خدمة IMEService Restart.
  • انتهاء دورة الـ 8 ساعات — 8-Hour Timer.
🔑 نصيحة أساسية: يعمل IME وفق نموذج موجّه بالأحداث وليس موجّهًا بالدفع، لذلك افهم المحفزات والدورة الزمنية لتحسين التخطيط وتقليل الارتباك التشغيلي، خصوصًا في سيناريوهات الدعم عن بُعد.
إذا أردت تنفيذًا شبه فوري في دعمك عن بُعد: اطلب من المستخدم تسجيل الخروج ثم الدخول (Logoff/Logon)، أو أعد تشغيل خدمة IME في سيناريو دعم مُتحكم به وفق سياسات المؤسسة.
مثل مقهى يعمل بطاقم دوام كامل: لست بحاجة إلى "استدعاء" الموظف في كل مرة؛ يكفي أن يتواجد في موعده (المؤقت) أو أن يُستدعى عند الحاجة (المحفز). إذا فهمت مواعيد الدوام والمحفزات، عرفت متى ستُخدم طلبك بالضبط.
خلاصة عملية:
  • التنفيذ شبه الفوري يتحقق عبر تسجيل الدخول أو إعادة تشغيل خدمة IME.
  • بدون محفز، قد ينتظر الجهاز حتى دورة الـ 8 ساعات.
  • زر المزامنة لا يشغّل عبء عمل سكربتات PowerShell.
  • افهم الفرق بين حالة السحابة ودورة تقييم الجهاز لقراءة البوابة بشكل صحيح.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
SessionLogonتسجيل دخول الجلسةأقوى محفز لإطلاق دورة تقييم السكربتات.
8-Hour Timerمؤقت 8 ساعاتدورة التقييم الافتراضية لسكربتات PowerShell.
Service Restartإعادة تشغيل الخدمةمحفز يعيد تهيئة أعباء العمل داخل IME.
Event-Drivenموجّه بالأحداثنموذج يعتمد على الأحداث والمؤقتات بدل الدفع الفوري.
Remote Supportالدعم عن بُعدسيناريو تُدار فيه المحفزات يدويًا للوصول لتنفيذ أسرع.
Logoff/Logonتسجيل الخروج والدخولأسلوب عملي لإجبار IME على إعادة التقييم فورًا.

🚀 الخاتمة

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

تعليقات



حجم الخط
+
16
-
تباعد السطور
+
2
-