Friday 2 March 2018

بويرشيل ويتوفوريكسيت لا يعمل


بويرشيل ويتفوريكسيت لا يعمل
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
الحصول على إكسيتكود باستخدام بدء العملية و ويتفوريكسيت بدلا من - Wait.
أحاول تشغيل برنامج من بويرشيل، انتظر للخروج، ثم الحصول على إكسيتكود، ولكن ليس لديها الكثير من الحظ. أنا لا أريد أن استخدام - Wait مع بدء العملية، وأنا بحاجة إلى بعض المعالجة على الاستمرار في الخلفية.
في ما يلي نص برمجي مبسط:
سيؤدي تشغيل هذا البرنامج النصي إلى بدء تشغيل المفكرة. بعد إغلاق هذا يدويا، سيتم طباعة رمز الخروج، وسوف تبدأ مرة أخرى، دون استخدام - wait. لا يتم توفير إكسيتكود عند إنهاء هذا:
أنا بحاجة إلى أن تكون قادرة على أداء معالجة إضافية بين بدء البرنامج والانتظار لإنهاء، لذلك لا أستطيع الاستفادة من - Wait. أي فكرة كيف يمكنني القيام بذلك ولا يزال الوصول إلى الخاصية. ExitCode من هذه العملية؟
أمرين يمكن أن تفعله أعتقد.
إنشاء كائن System. Diagnostics. Process يدويا وتجاوز بدء العملية تشغيل قابل للتنفيذ في مهمة الخلفية (فقط للعمليات غير التفاعلية!)
في ما يلي كيفية القيام بما يلي:
هناك أمران يجب تذكرهما هنا. واحد هو لإضافة الوسيطة - PassThru واثنين هو إضافة الوسيطة - Wait. تحتاج إلى إضافة وسيطة الانتظار بسبب هذا العيب connect. microsoft/PowerShell/feedback/details/520554/start-process-does-not-return-exitcode-property.
بمجرد القيام بذلك يتم تمرير كائن العملية مرة أخرى ويمكنك إلقاء نظرة على الخاصية إكسيتكود من هذا الكائن. هنا مثال:
إذا قمت بتشغيله دون - PassThru أو - Wait، فإنه سيتم طباعة أي شيء.
أثناء محاولة الخروج من الاقتراح النهائي أعلاه، اكتشفت حلا أبسط حتى. كل ما كان علي القيام به كان مخبأ مقبض العملية. حالما فعلت ذلك، $ process. ExitCode عملت بشكل صحيح. إذا لم أكن مخبأ مقبض العملية، كان $ process. ExitCode فارغ.
أو حاول إضافة هذا.
باستخدام هذا الرمز، لا يزال بإمكانك السماح بويرشيل رعاية إدارة إخراج / تيارات خطأ إعادة توجيه، والتي لا يمكنك القيام به باستخدام System. Diagnostics. Process. Start () مباشرة.
يبدو الخيار "-Wait" لمنع بالنسبة لي على الرغم من أن عمليتي قد انتهى.
حاولت حل أدريان وأنه يعمل. ولكنني انتظرت عملية بدلا من الاعتماد على أثر جانبي لاسترجاع مقبض العملية.

مثال الاستخدام.
أنا حلها بهذه الطريقة:
أنا إعادة توجيه كل من المدخلات والمخرجات والخطأ وتناولت القراءة من الإخراج وتدفقات الخطأ. يعمل هذا الحل ل سك 7-8، سواء بالنسبة ويندوز 7 و ويندوز 8.
حاولت جعل فئة من شأنها أن تحل مشكلتك باستخدام تيار غير متزامن قراءة، من خلال اتخاذ في حساب علامة بييرز، روب، ستيفيفاي الأجوبة. القيام بذلك أدركت أن هناك خلل المتعلقة غير متزامن الناتج إخراج تيار قراءة.
لا يمكنك القيام بذلك:
سوف تتلقى System. InvalidOperationException: لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية حتى الآن.
ثم لديك لبدء إخراج غير متزامن قراءة بعد بدء العملية:
القيام بذلك، جعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن:
ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن.
لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية "عملية" و "بروسيسستارتينفو" تم تصميم.
ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة السباق.
أي من الإجابات أعلاه هو القيام بهذه المهمة.
الحل روب معلقة وحل "مارك بييرز 'الحصول على استثناء التخلص منها. (حاولت" حلول "من الإجابات الأخرى).
لذلك قررت أن أقترح حل آخر:
هذا رمز تصحيحها ويعمل تماما.
أنا شيء أن هذا هو نهج بسيط وأفضل (نحن لسنا بحاجة أوتوريزيتيفنت):
كنت تواجه نفس المشكلة، ولكن السبب كان مختلفا. ومع ذلك فإنه يحدث تحت ويندوز 8، ولكن ليس تحت ويندوز 7. يبدو أن السطر التالي قد تسبب في المشكلة.
كان الحل عدم تعطيل وسشليكسكيوت. تلقيت الآن نافذة منبثقة شل، غير المرغوب فيها، ولكن أفضل بكثير من البرنامج في انتظار لا شيء معين أن يحدث. لذلك أضفت العمل التالي حول ذلك:
الآن الشيء الوحيد الذي يزعجني هو لماذا يحدث هذا تحت ويندوز 8 في المقام الأول.
المقدمة.
الإجابة المقبولة حاليا لا تعمل (يلقي استثناء) وهناك الكثير من الحلول ولكن لا يوجد رمز كامل. ومن الواضح أن هذا يضيع الكثير من الوقت الناس لأن هذا هو السؤال الشعبي.
الجمع بين إجابة مارك بييرز وإجابة كارول تيل كتبت الكود الكامل على أساس كيف أريد استخدام الأسلوب Process. Start.
لقد استخدمته لإنشاء الحوار التقدم حول أوامر جيت. هذه هي الطريقة التي استخدمتها:
من الناحية النظرية يمكنك أيضا الجمع بين ستدوت وستدير، ولكن لم اختبر ذلك.
وأنا أعلم أن هذا العشاء القديم ولكن بعد قراءة هذه الصفحة بأكملها لا شيء من الحلول كان يعمل بالنسبة لي، على الرغم من أنني لم أحاول محمد ريحان كما كان من الصعب قليلا على رمز لمتابعة، على الرغم من أنني أعتقد أنه كان على الطريق الصحيح . عندما أقول أنها لم تعمل هذا ليس صحيحا تماما، وأحيانا أنها سوف تعمل بشكل جيد، وأعتقد أنه هو شيء للقيام به مع طول الإخراج قبل علامة إوف.
على أي حال، كان الحل الذي عملت بالنسبة لي لاستخدام المواضيع المختلفة لقراءة ستانداردوتبوت و ستانداردرور وكتابة الرسائل.
نأمل أن يساعد هذا الشخص، الذي يعتقد أن هذا يمكن أن يكون من الصعب جدا!
الحلول الأخرى (بما في ذلك EM0 في) لا يزال مسدودا لتطبيقي، بسبب مهلات الداخلية واستخدام كل من ستانداردوتبوت و ستانداردرور من تطبيق ولدت. هنا هو ما عمل لي:
تحرير: إضافة التهيئة من ستارتينفو إلى نموذج التعليمات البرمجية.
هذه الوظيفة ربما عفا عليها الزمن ولكن اكتشفت السبب الرئيسي لماذا عادة تعليق هو بسبب تجاوز كومة ل ريديريكتستانداردوتبوت أو إذا كان لديك ريديريكتستانداردرور.
كما بيانات الإخراج أو بيانات الخطأ كبيرة، وسوف يسبب وقت تعليق لأنه لا يزال يعالج لمدة غير محددة.

بويرشيل ويتفوريكسيت لا يعمل
يتم استخدام التحميل الزائد ويتفوريكسيت () () () لجعل انتظار مؤشر الترابط الحالي حتى تنتهي العملية المقترنة. تقوم هذه الطريقة بإرشاد مكون العملية إلى الانتظار لوقت غير محدود من الوقت لإنهاء العملية. قد يؤدي هذا إلى توقف التطبيق عن الاستجابة. على سبيل المثال، إذا قمت باستدعاء كلوسمينويندو لعملية تحتوي على واجهة مستخدم، قد لا يتم التعامل مع الطلب إلى نظام التشغيل إنهاء العملية المقترنة إذا تمت كتابة العملية عدم إدخال حلقة الرسائل.
يضمن هذا التحميل الزائد أن جميع عمليات المعالجة قد اكتملت، بما في ذلك التعامل مع الأحداث غير المتزامنة للإخراج القياسي المعاد توجيهه. يجب استخدام هذا التحميل الزائد بعد إجراء مكالمة إلى التحميل الزائد ويتفوريكسيت (Int32) عند إعادة توجيه الإخراج القياسي إلى معالجات الأحداث غير المتزامنة.
هذا بالطبع ل. ما الذي يجعلك تعتقد أنه لا ينتظر حتى تنتهي عملية المذكرة؟ ما هي علامات ذلك؟ ما هو الدليل؟
عملية p = عملية جديدة ()؛
MessageBox. Show (& كوت؛ يجب إغلاق المتصفح & كوت؛)؛
باستثناء أنك لا ثم الحصول على كائن العملية التي يمكنك استخدامها. إن جربت.
خافت ميبروك كعملية جديدة ()
ميبروك = process. Start (& كوت؛ إيكسلور & كوت ؛، & كوت؛ finance. yahoo/q/hp؟ s = & كوت؛ + رمز)؛
تقوم ميكروسوفت بإجراء استطلاع عبر الإنترنت لفهم رأيك لموقع مسن على الويب. إذا اخترت المشاركة، سيتم تقديم الاستبيان عبر الإنترنت لك عند مغادرة موقع مسن على ويب.

بويرشيل ويتفوريكسيت لا يعمل
لدي حل حيث أدعو بويرشيل في مؤشر ترابط جديد، ثم إعادة توجيه الإخراج إلى مربع نص.
كل شيء يعمل على جهاز الكمبيوتر ديف بلدي، ولكن على أجهزة الكمبيوتر الأخرى أنه لا :( في أجهزة الكمبيوتر الأخرى هناك ببساطة لا إخراج من بويرشيل على الإطلاق، و conhost. exe و powershell. exe يعمل في الخلفية حتى لو أغلقت بلدي التطبيق. (على جهاز الكمبيوتر الخاص بي أنها تغلق مع بلدي التطبيق.)
لماذا يعمل على بلدي، وليس على الآخرين؟
إذا قمت بتغيير & كوت؛ powershell. exe & كوت؛ إلى & كوت؛ cmd. exe & كوت؛ ثم يعمل في كل مكان، ولكن أنا بحاجة لتشغيل بويرشيل.
حاولت بدء سمد أولا، ثم تشغيل بويرشيل من هناك، ولكن فقدت كل الإخراج كذلك.
كومبي هو Win10 x64، والآخرين Win7، Win8، 2018r2، الخ.
حاولت تجميعه على الأقل 4-5 الإصدار.
شكرا لكم على مساعدتكم مقدما!
تم النقل بواسطة qing__ الاثنين، ديسمبر 05، 2018 2:33 آم المتعلقة ف.
جميع الردود.
يناقش هذا المنتدى مصمم فيسوال ستوديو وف / سي، فيسوال ستوديو غويدانس أوتوماتيون تولكيت، توثيق المطور ونظام التعليمات، ومحرر فيسوال ستوديو.
قد تكون ذات صلة مشكلتك لتطوير ف أنا سوف نقل هذا الموضوع إلى منتدى المقابلة لإجابة المهنية.
مسن دعم المجتمع.
يرجى تذكر النقر على & كوت؛ وضع علامة كجواب & كوت؛ والردود التي حلت مشكلتك، وانقر على & كوت؛ إلغاء تحديد الإجابة ك & كوت؛ ان لم. هذا يمكن أن يكون مفيدا لأعضاء المجتمع الآخرين قراءة هذا الموضوع. إذا كان لديك أي مجاملات أو شكاوى لدعم مسن، لا تتردد في الاتصال مسندفسف @ ميكروسوفت.
ربما أجهزة الكمبيوتر الأخرى ليس لديها 4-5 عليها. أو ربما يعني 4.5.
ربما يتم تشغيله بشكل صحيح فقط على جهاز الكمبيوتر الخاص بالتطوير من فيسوال ستوديو. هل قمت بالفعل بتثبيته على جهاز الكمبيوتر التنمية الخاصة بك وعدم تشغيله من فيسوال ستوديو؟
ربما التطبيق الخاص بك لتشغيل مع امتيازات المسؤول لهذا العمل. هل تقوم بتشغيل فيسوال ستوديو مع امتيازات المسؤول عند تشغيل هذا التطبيق من فيسوال ستوديو؟
هل جميع الأنظمة الأخرى x.64 أيضا؟ هل تجميع إلى وحدة المعالجة المركزية x.64 أو أنيكيبو أو x.86 وحدة المعالجة المركزية؟
ربما محاولة تجميع إلى 4.0 ومعرفة ما إذا كان يعمل على أنظمة أخرى.
قصدت لقد حاولت 4-5 إصدارات مختلفة من (بما في ذلك 4.0 بالطبع).
الأخبار هي أنه يعمل على بعض أجهزة الكمبيوتر الأخرى، ولكن فقط على الأجهزة مع أحدث ويندوز 10 (الإصدار 1607). في النسخة 1511 لا يفعل شيئا. محبط جدا.
لقد حاولت تثبيت فستوديو على win8.1، ولكن التعليمات البرمجية لا تعمل إما في وضع التصحيح أو تجميعها.
لقد حاولت تثبيت فستوديو على win10 آخر، وعملت التعليمات البرمجية في وضع التصحيح وتجميعها كذلك.
حاولت مع وبدون امتيازات المشرف، لا حظ.
تم تجميع التعليمات البرمجية ل x64 أصلا.
كما قلت، في كل مرة عندما لا يعمل التطبيق، conhost. exe و powershell. exe يبدو أن شنق، وأنها لم خروج بعد أن أخرج بلدي التطبيق.
أنا حقا لا أفهم لماذا هذا المشرف قد انتقل مشكلتك إلى هذا المنتدى.
يبدو أن شيئا مثل & كوت؛ تحريكه بعيدا، وليس مشكلتي & كوت ؛.
ومع ذلك، إذا كان البرنامج يعمل على الكمبيوتر ويندوز A وليس على الكمبيوتر B لا توجد مشكلة في البرنامج. وينبغي أن تكون هناك اختلافات خارج ذلك.
غالبا ما تتم هذه المشاكل في منتديات تكنيت حيث يعيش المشرفون على النظام.
قصدت لقد حاولت 4-5 إصدارات مختلفة من (بما في ذلك 4.0 بالطبع).
الأخبار هي أنه يعمل على بعض أجهزة الكمبيوتر الأخرى، ولكن فقط على الأجهزة مع أحدث ويندوز 10 (الإصدار 1607). في النسخة 1511 لا يفعل شيئا. محبط جدا.
لقد حاولت تثبيت فستوديو على win8.1، ولكن التعليمات البرمجية لا تعمل إما في وضع التصحيح أو تجميعها.
لقد حاولت تثبيت فستوديو على win10 آخر، وعملت التعليمات البرمجية في وضع التصحيح وتجميعها كذلك.
حاولت مع وبدون امتيازات المشرف، لا حظ.
تم تجميع التعليمات البرمجية ل x64 أصلا.
كما قلت، في كل مرة عندما لا يعمل التطبيق، conhost. exe و powershell. exe يبدو أن شنق، وأنها لم خروج بعد أن أخرج بلدي التطبيق.
تحقق من سجلات أحداث النظام على الأنظمة التي لن يتم تشغيلها لمعرفة المشكلات التي قد تحدث.
محاولة تشغيل استوديو البصرية مع امتيازات المشرف على أنظمة ستوديو البصرية المثبتة على البرنامج الذي يتوقف على عند تشغيل من استوديو البصرية ومعرفة ما إذا كان البرنامج ثم تشغيل من التصحيح استوديو البصرية.
مكان محاولة التقاط حول رمز وعرض علبة الرسائل إذا حدث استثناء عرض استثناء واستثناء تتبع كومة.
ليس لدي أي فكرة عما تفعله وربما ينظر التطبيق الخاص بك على أنه فيروس أو البرامج الضارة على بعض النظم.
ميكروسوفت مفب (فيسوال باسيك)
هناك على الاطلاق أي أحداث سجل الأخطاء / التحذيرات، أنا بالفعل التحقق منها.
حاول مع المشرف الخاص.
محاولة الصيد لا يفعل شيئا، لأنه لا توجد رسالة خطأ يمكن أن قبض.
ومثل. - ExecutionPolicy الالتفافية - NoLogo - NoExit & كوت؛ ببساطة يقول بويرشيل كيف تبدأ نفسها.
هذا بويرشيل يعمل دون مشاكل خارج بلدي التطبيق مع هذه مفاتيح سطر الأوامر.
يحدث شيء سيء عند إنشاء مؤشر الترابط الجديد أو العملية الجديدة.
هل تحققت من أن بويرشيل قيد التشغيل من خلال عرض نافذة الأمر؟ تحتاج إلى تحديد ما إذا كان بويرشيل ينفذ بشكل صحيح ولا تنتظر الإدخال من نافذة الأمر.
ميكروسوفت مفب (فيسوال باسيك)
شكرا لك بول، لم أحاول هذا من قبل.
في بيئة العمل، فإنه يعرض نافذة فارغة مع مؤشر وامض، وأنه لا يقبل أي إدخال. يتم قبول المدخلات من التطبيق، ويتم عرض الإخراج في نافذة النص التطبيق.
على بيئة غير العمل، فإنه يعرض نافذة، ولكن بويرشيل يعمل داخله، ويقبل المدخلات من نافذة الأمر، ويتم عرض الإخراج في إطار الأمر كذلك.
حتى يعمل بويرشيل، ولكن إعادة التوجيه لا يعمل لبعض الأسباب.
هل يمكنك مساعدتي لماذا؟
أنا غير معروف مع بويرشيل، ولكن ربما هذا الرمز على موقعنا يمكن أن تساعدك على الجزء إعادة توجيه.
شكرا لك بول، لم أحاول هذا من قبل.
في بيئة العمل، فإنه يعرض نافذة فارغة مع مؤشر وامض، وأنه لا يقبل أي إدخال. يتم قبول المدخلات من التطبيق، ويتم عرض الإخراج في نافذة النص التطبيق.
على بيئة غير العمل، فإنه يعرض نافذة، ولكن بويرشيل يعمل داخله، ويقبل المدخلات من نافذة الأمر، ويتم عرض الإخراج في إطار الأمر كذلك.
حتى يعمل بويرشيل، ولكن إعادة التوجيه لا يعمل لبعض الأسباب.
هل يمكنك مساعدتي لماذا؟
هل حاولت إضافة مكالمة إلى ويتفوريكسيت؟
ميكروسوفت مفب (فيسوال باسيك)
في هذه الحالة التطبيق ينتظر إلى الأبد، والشكل لا يظهر حتى حتى قتل عملية conhost. exe.
في هذه الحالة التطبيق ينتظر إلى الأبد، والشكل لا يظهر حتى حتى قتل عملية conhost. exe.
ماذا عن إزالة - NoExit من الأوامر بدء التشغيل.
ميكروسوفت مفب (فيسوال باسيك)
في هذه الحالة كان من المثير للاهتمام.
إن. Arguments الآن & كوت؛ - ExecutionPolicy الالتفافية - NoLogo - NoExit الحصول على عملية & كوت ؛.
I ريموفد - NoExit، وفي هذه الحالة كلا النظامين تفعل الشيء نفسه: بويرشيل يبدأ، والحصول على عملية يرسل الإخراج إلى إطار النموذج، ثم يعرض MyProcess_ErrorDataReceived & كوت؛ خطأ: & كوت ؛، لأن بويرشيل خرجت.
لذلك في هذه الحالة يمكن بويرشيل إعادة توجيه انتاجها على نظام غير يعمل كذلك، ولكن بعد ذلك خرجت.
إذا وضعت مرة أخرى - NoExit، لا شيء يظهر (حتى إخراج الحصول على العملية). غريب جدا.
في هذه الحالة كان من المثير للاهتمام.
إن. Arguments الآن & كوت؛ - ExecutionPolicy الالتفافية - NoLogo - NoExit الحصول على عملية & كوت ؛.
I ريموفد - NoExit، وفي هذه الحالة كلا النظامين تفعل الشيء نفسه: بويرشيل يبدأ، والحصول على عملية يرسل الإخراج إلى إطار النموذج، ثم يعرض MyProcess_ErrorDataReceived & كوت؛ خطأ: & كوت ؛، لأن بويرشيل خرجت.
لذلك في هذه الحالة يمكن بويرشيل إعادة توجيه انتاجها على نظام غير يعمل كذلك، ولكن بعد ذلك خرجت.
إذا وضعت مرة أخرى - NoExit، لا شيء يظهر (حتى إخراج الحصول على العملية). غريب جدا.
هل يقوم بويرشيل بتشغيل الأمر حتى يكتمل؟
أنا لم أر مثالا بعد أن يستخدم - NoExit. أن تبقي فقط بويرشيل من إنهاء، والتي ربما لا تريد. يمكنك أيضا محاولة وضع ويتفوريكسيت بعد عبارات ريادلين لمعرفة ما إذا كان يجعل أي فرق.
ميكروسوفت مفب (فيسوال باسيك)
لا، أريد بويرشيل للحفاظ على تشغيل، لأنه عادة (بدلا من الأمر جيت-بروسيس) أضمن كمدليتس إدارة إكسهانج شل في نهاية قائمة. Parameters. ويعمل على جهاز الكمبيوتر الخاص بي.
يمكنك محاولة هذا الرمز على بناء 1607 وعلى القديمة ويندوز؟
تقوم ميكروسوفت بإجراء استطلاع عبر الإنترنت لفهم رأيك لموقع مسن على الويب. إذا اخترت المشاركة، سيتم تقديم الاستبيان عبر الإنترنت لك عند مغادرة موقع مسن على ويب.

معالجة . طريقة ويتفوريكسيت.
تحتوي الوثائق المرجعية أبي على منزل جديد. انتقل إلى متصفح أبي على docs. microsoft للاطلاع على التجربة الجديدة.
تعيين الفترة الزمنية للانتظار حتى يتم إنهاء العملية المقترنة، وحظر سلسلة عمليات التنفيذ الحالية حتى انقضاء الوقت أو إنهاء العملية. لتجنب حظر مؤشر الترابط الحالي، استخدم الحدث الذي تم الخروج منه.
للحصول على أمثلة التعليمات البرمجية، راجع صفحات مرجع الخاصية ستانداردرور و إكسيتكود.
الجمعية: النظام (في System. dll)
لإرشاد مكون العملية بالانتظار إلى أجل غير مسمى للخروج من العملية المقترنة.
يرشد مكون العملية إلى الانتظار لعدد الملي ثانية المحدد للعملية المقترنة للخروج.

No comments:

Post a Comment