سؤال

تخيل دوس النمط .cmd الملف الذي يستخدم لإطلاق مترابطة إطارات التطبيقات في حق النظام.

على سبيل المثال:
1) إطلاق تطبيق الملقم عن طريق الاتصال exe مع المعلمات.
2) انتظار الخادم أن تصبح تهيئة (أو كمية محددة من الوقت).
3) إطلاق تطبيق العميل عن طريق الاتصال exe مع المعلمات.

ما هو أبسط طريقة لتحقيق هذا النوع من دفعة وظيفة في باورشيل ؟

هل كانت مفيدة؟

المحلول

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

$sp = get-process server-application
$sp.WaitForInputIdle()

هل يمكن أيضا استخدام العملية.تبدأ لبدء عملية ويكون ذلك عودة العملية الدقيقة.ثم أنت لا تحتاج إلى الحصول على هذه العملية.

$sp = [diagnostics.process]::start("server-application", "params")
$sp.WaitForInputIdle()
$cp = [diagnostics.process]::start("client-application", "params")

نصائح أخرى

@لارس Truijens اقترح

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

هذا هو أكثر أناقة من النوم لفترة ثابتة (أو الموردة عبر المعلمة) المقدار من الوقت.ومع ذلك ، WaitForInputIdle

ينطبق فقط على العمليات مع المستخدم واجهة و, ولذلك, رسالة حلقة.

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

الانتظار 10 ثوان بين إطلاق التطبيقات ، في محاولة

launch-server-application serverparam1 serverparam2 ...
Start-Sleep -s 10
launch-client-application clientparam1 clientparam2 clientparam3 ...

إذا كنت ترغب في إنشاء برنامج نصي و الحجج التي مرت في إنشاء ملف يسمى runlinkedapps.ps1 (أو أيا كان) مع هذه المحتويات:

launch-server-application $args[0] $args[1]
Start-Sleep -s 10
launch-client-application $args[2] $args[3] $args[4]

أو ومع ذلك اخترت أن توزيع الخادم و العميل المعلمات على خط تستخدمه لتشغيل runlinkedapps.ps1.إذا كنت تريد أن تمر في التأخير هنا بدلا من hardcoding 10.

تذكر الخاص بك .ps1 الملف تحتاج إلى أن تكون على المسار الخاص بك ، أو عليك أن تحدد موقعها عند تشغيله.(ومن المفترض أن إطلاق خادم التطبيق وإطلاق العميل-تطبيق على المسار الخاص بك - إن لم يكن, سوف تحتاج إلى تحديد المسار الكامل لهم كذلك.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top