Sunday 28 January 2018

بويرشيل بدء عملية ويتكوريكسيت مهلة


بويرشيل ستارت-بروسيس ويتكوريكسيت مهلة
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية التقاط إخراج العملية بشكل غير متزامن في بويرشيل؟
أريد التقاط ستدوت وستدير من عملية أن أبدأ في نص بويرشيل وعرضه بشكل غير متزامن إلى وحدة التحكم. لقد وجدت بعض الوثائق حول القيام بذلك من خلال مسن والمدونات الأخرى.
بعد إنشاء المثال أدناه وتشغيله، لا يمكنني أن يظهر أي إخراج ليتم عرضه بشكل غير متزامن. يتم عرض كل الإخراج فقط عند انتهاء العملية.
في هذا المثال، كنت أتوقع أن نرى إخراج "مرحبا" على سطر الأوامر قبل نهاية تنفيذ البرنامج لأن الحدث أوتبوتداتاريسيتد يجب أن يكون قد تم تشغيل.
لقد حاولت هذا باستخدام الملفات التنفيذية الأخرى - java. exe، git. exe، الخ كل منهم لديهم نفس التأثير، لذلك أنا تركت أعتقد أن هناك شيئا بسيطا أنني لست فهم أو غاب. ما الذي يجب القيام به أيضا لقراءة ستدوت بشكل غير متزامن؟
للأسف القراءة غير متزامنة ليست بهذه السهولة إذا كنت تريد أن تفعل ذلك بشكل صحيح. إذا قمت بالاتصال ويتفوريكسيت () دون مهلة يمكنك استخدام شيء مثل هذه الوظيفة كتبت (استنادا إلى رمز C #):
فإنه يلتقط ستدوت، ستدير وخروج رمز. مثال للاستخدام:
لمزيد من المعلومات والتنفيذات البديلة (في C #) قراءة هذه المشاركة بلوق.
بناء على جواب الكسندر أوبيرشت لقد قمت بإنشاء وظيفة تستخدم مهلة وفصول المهام غير المتزامنة بدلا من معالجات الأحداث. وفقا لمايك أديلسون.
لسوء الحظ، هذه الطريقة (معالجات الأحداث) لا توفر أي وسيلة لمعرفة متى تم استلام آخر بت من البيانات. لأن كل شيء غير متزامن، فمن الممكن (ولقد لاحظت هذا) للأحداث لاطلاق النار بعد عاد ويتفوريكسيت ().
لم أستطع الحصول على أي من هذه الأمثلة للعمل مع بس 4.0.
كنت أرغب في تشغيل دمية تطبيق من حزمة نشر الأخطبوط (عبر Deploy. ps1) وانظر الإخراج في "الوقت الحقيقي" بدلا من الانتظار لإنهاء العملية (ساعة بعد ذلك)، لذلك جئت مع ما يلي:
الأمثلة هنا كلها مفيدة، ولكن لم تناسب تماما حالة استخدام بلدي. لم أكن أرغب في استدعاء الأمر والخروج. أردت فتح موجه الأوامر، وإرسال المدخلات، وقراءة الإخراج، وتكرار. وهنا حلا لذلك.

بويرشيل ستارت-بروسيس ويتكوريكسيت مهلة
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
باستخدام بدء عملية وأمر - wait في بويرشيل.
أنا جديد على بويرشيل وليس لديهم الكثير من خلفية البرمجة، مجرد محاولة لاستخدامه لتغليف البرمجيات. على أي حال، لقد اكتشفت حول الأمر بدء العملية مع المعلمة - Wait، وأنها تعمل كبيرة لمعظم الأشياء. ما لاحظته على الرغم من ذلك هو أنه لا ينتظر فقط للعملية التي تحددها، فإنه ينتظر لأية عمليات فرعية، حتى بعد العملية الرئيسية لم تعد قيد التشغيل. عادة هذا أمر جيد، ولكن لدي حالة غريبة. أنا تشغيل ملف دفعة أوراكل معقدة مع بدء العملية. ملف الدفعي في نهاية المطاف تشغيل setup. exe وهو ما أريد حقا أن تنتظر، ولكن العمليات الأخرى تفرخ أيضا أن تتوقف أبدا. حتى إذا كنت تستخدم المعلمة - wait، البرنامج النصي أبدا يتوقف حتى بعد setup. exe لم يعد قيد التشغيل. أقرب ما عثرت عليه هو استخدام هذا:
هذا يعمل، ولكن أعتقد أن يكون هناك طريقة أفضل دون الحاجة إلى استخدام أمر مهلة. أيه أفكار؟

بويرشيل ستارت-بروسيس ويتكوريكسيت مهلة
أنا باستخدام باستخدام منتج النسخ الاحتياطي يسمى كومفولت (الإصدار 9 / SP6a).
أنا أتولى قيادة كومفولت & كوت؛ كميديا ​​-b XX2201L4 - el 'أوفسيت' & كوت ؛.
هذا يعمل موافق من موجه بويرشيل التفاعلية.
لقد وضعت ما يلي في ملف نصي بويرشيل:
$ exportarg = ومثل. - b XX2201L4 - el 'أوفسيت' & كوت؛
بدء عملية $ تصدير $ إكسبورتيرغ - wait.
ومع ذلك لا أحصل على & كوت؛ تم & كوت؛ عرض على الشاشة. أرى أن عملية البدء بإنشاء نافذة جديدة ولكن هذه النافذة لا يذهب بعيدا حتى عندما & كوت؛ كميديا ​​& كوت؛ وقد فعلت القيادة عملها.
كيف يمكنني حل هذه المشكلة؟
يمكنك محاولة تشغيل بعض بسديبوغ و بسبرياكبوانتس على ذلك. جرب هذه الأوامر إذا لم تكن على دراية بكيفية إعدادها:
ثم تنفيذ البرنامج النصي الخاص بك.
عند تشغيل سترى بعض الإخراج الأصفر (لأن يتم تشغيل التصحيح على)، وسوف تتوقف على خطوط 2 و 3 و، 4. عندما يتوقف، يمكنك الاستعلام حولها من خلال النظر في المتغيرات، وعمليات التحقق، وغيرها لتحديد المزيد حول الأعمال الحالية للنص من مجرد وجود تشغيله وفشل. أيضا، يمكنك استخدام ورايت-ديبوغ للحصول على رؤية مماثلة، ولكن، فإنه لا يسمح لك لعرض الكائنات خط أنابيب وقت التنفيذ.
وأخيرا، قد تحتاج إلى كتابة الخطأ القياسي والمخرجات إلى الملف لمعرفة ما إذا كان هناك أي شيء لا تلحق به لأنه يعمل في إطار مختلف. اختصار هذه العملية، حاول الخيار - NoNewWindow. إذا حدثت أخطاء أو هناك بعض الاستجابة من. exe يجب أن تشاهد ذلك في وحدة التحكم.
وضع علامة كجواب من قبل يان Li_ منسق الجمعة، 15 يونيو، 2012 1:48 ص.
جميع الردود.
لقد حاولت الآن استخدام المسار الكامل ل & كوت؛ كميديا ​​& كوت؛ ونفس الشيء يحدث!
بعض الأسئلة والاقتراحات:
بالإضافة إلى إعطاء المسار الكامل ل كمديا، أود أن أقترح بما في ذلك - filepath و - argumentlist أسماء المعلمة. هل يمكنك معرفة ما إذا كانت تتلقى المعلمات التي تنوي المرور بها؟ يمكنك القول يمكنك تشغيل الأمر من موجه بويرشيل. ماذا يحدث عند تشغيله من المطالبة باستخدام معلمات بدء العملية والحرفية؟ ماذا يحدث إذا تركت خارج - هل - نافذة إغلاق في نهاية المطاف؟ ماذا يحدث إذا وضعت للتو الأمر كمديا في البرنامج النصي (أي بدون استخدام عملية البدء؟ ما هي النافذة التي يتم فتح عملية البدء ثم لا تغلق؟
إذا كان كمديا يدير موافق من البرنامج النصي بويرشيل دون استخدام عملية البدء، ولكن تحتاج إلى بدء عملية بسبب وظيفة - wait، ثم ربما السيناريو الرئيسي الخاص بك يمكن استخدام بدء عملية لبدء بويرشيل لتشغيل البرنامج النصي أنوث الذي يحتوي فقط على أمر كمديا .
يمكنك محاولة تشغيل بعض بسديبوغ و بسبرياكبوانتس على ذلك. جرب هذه الأوامر إذا لم تكن على دراية بكيفية إعدادها:
ثم تنفيذ البرنامج النصي الخاص بك.
عند تشغيل سترى بعض الإخراج الأصفر (لأن يتم تشغيل التصحيح على)، وسوف تتوقف على خطوط 2 و 3 و، 4. عندما يتوقف، يمكنك الاستعلام حولها من خلال النظر في المتغيرات، وعمليات التحقق، وغيرها لتحديد المزيد حول الأعمال الحالية للنص من مجرد وجود تشغيله وفشل. أيضا، يمكنك استخدام ورايت-ديبوغ للحصول على رؤية مماثلة، ولكن، فإنه لا يسمح لك لعرض الكائنات خط أنابيب وقت التنفيذ.
وأخيرا، قد تحتاج إلى كتابة الخطأ القياسي والمخرجات إلى الملف لمعرفة ما إذا كان هناك أي شيء لا تلحق به لأنه يعمل في إطار مختلف. اختصار هذه العملية، حاول الخيار - NoNewWindow. إذا حدثت أخطاء أو هناك بعض الاستجابة من. exe يجب أن تشاهد ذلك في وحدة التحكم.
وضع علامة كجواب من قبل يان Li_ منسق الجمعة، 15 يونيو، 2012 1:48 ص.
لدي مشكلة مشابهة. أفعل بدء عملية على ديسم (مع المسار الكامل، قائمة الحجة، الانتظار و نونويندو). في المرة الأولى التي تعمل فيها النصوص البرمجية هذه كمدليت، فإنه لن تنتهي. لقد حلت محل المكالمة الأولى (التي لا / مونت-ويم) مع بسيطة & كوت؛ & أمب؛ & كوت؛ تشغيل ويعمل.
يبدو لي مثل بدء عملية يعاني بعض ميزات العملية الشديدة.
بس C: \ أوك & غ؛ الحصول على استضافة.
أنا تشغيل هذا في ويندوز مربع الظاهري 7 المهنية، تحديث بويرشيل ل v3.0.
ملاحظة: يحتوي بويرشيل 3.0 مشاكل مع مساعدته حاليا (تحديث مساعدة كمسؤول لا يعمل بشكل جيد)
كان لي هذه المشكلة عند محاولة دفعة أدوبي فلاش كس 5.5. القضية على ما يبدو، التي تنتظر مجموعة العملية برمتها لإنهاء. في حالة فلاش، فإنه يخلق مدير ملحق أدوبي CS5، الذي لا ينتهي عند خروج عملية فلاش. إذا قتلت مدير الإرشاد، فستعود عملية البدء.
حاولت نهجين يتحايلان على هذه المسألة:
يمكنك إما إنشاء كائن عملية باستخدام كائن جديد System. Diagnostic. Process الخ (يجب أن توفر شبكة الإنترنت أمثلة كافية كيفية القيام بذلك).
أو، الطريقة أبسط بكثير.
استخدام بدء عملية - passthru بدلا من - انتظر، حفظ العملية التي تم إرجاعها في متغير واستخدام ويتفوريكسيت ()، مثل هذا:
نأمل أن يساعد هذا أي شخص.
حرره أوينكلمان الجمعة، 15 نوفمبر، 2013 2:48 م.
تقوم ميكروسوفت بإجراء استبيان عبر الإنترنت لفهم رأيك لموقع تيشنيت على الويب. إذا اخترت المشاركة، فسيتم تقديم الاستبيان عبر الإنترنت عند مغادرة موقع تيشنيت على ويب.

سجل والتر.
. الكتابة أثناء التعلم.
الجمعة 18 تشرين الثاني / نوفمبر 2011.
process. WaitForExit (Int32) معلقة المشكلة.
كما ترون، التعليمات البرمجية يبدأ عملية "cmd. exe" ويمر إليها الأمر أريد أن يتم تنفيذها.
في التعليمات البرمجية استخدم الأمر بينغ - t 8.8.8.8 الذي، بسبب الخيار - t، بينغ المضيف دون توقف. ما يحدث؟ عملية "cmd. exe" جنبا إلى جنب مع الأمر بينغ - t أبدا يخرج ولا يغلق تيار ستدوت وهكذا تعليق التعليمات البرمجية لدينا في أوتبوت = process. StandardOutput. ReadToEnd ()؛ خط لأنه لا يمكن أن تنجح قراءة كل تيار.
يحدث نفس الشيء أيضا إذا كان الأمر في ملف دفعي يعلق لأي سبب من الأسباب، وبالتالي فإن التعليمات البرمجية أعلاه يمكن أن تعمل بشكل مستمر لسنوات ثم تعليق فجأة دون أي سبب واضح.
يمكنك تجربة حالة توقف تام إذا كان الأمر الذي تعلقه على "cmd. exe" أو العملية التي تتصل بها يملأ الإخراج القياسي أو الخطأ القياسي. هذا لأن التعليمات البرمجية لدينا لا يمكن الوصول إلى خطوط.
في واقع الأمر عملية الطفل (الأمر بينغ أو ملف دفعي أو أي عملية كنت تنفذ) لا يمكن أن تستمر إذا برنامجنا لا يقرأ المخازن المؤقتة شغل من تيارات وهذا لا يمكن أن يحدث لأن التعليمات البرمجية هو معلق على الخط مع العملية. ويتفوريكسيت () والتي سوف تنتظر إلى الأبد لمشروع الطفل للخروج.
الحجم الافتراضي لكل من تيارات هو 4096 بايت. يمكنك اختبار هذه الأحجام اثنين مع هذه الملفات دفعة:

No comments:

Post a Comment