كيف يمكنني الحصول على معلمات PowerShell التي لا ربط معلمات أنابيب خط الأنابيب حتى بعد بدء التشغيل؟

StackOverflow https://stackoverflow.com/questions/1303282

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أكتب cmdlet التي يمكن استدعاؤها في منتصف خط أنابيب. مع هذا cmdlet، هناك معلمات لها valuefrompipelineypropertyname. عرفت السمة بحيث يمكن ل CMDlet استخدام المعلمات بنفس الأسماء التي يتم تعريفها مسبقا في خط الأنابيب.

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

لقد فكرت في نقل الأشياء إلى procidrecord () طريقة. لسوء الحظ، هناك وقت واحد، عملية مكلفة نسبيا تحتاج إلى حدوث. أفضل مكان لهذا الحال يبدو أنه في النظارة () طريقة للمساعدة في ضمان حدوث ذلك مرة واحدة فقط في خط الأنابيب.

أ بعض الأسئلة السؤال المحيط بهذا:

  1. هل يوجد جيد الطريق حول هذا؟
  2. هذه المعلمات نفسها أيضا إلزامي مجموعة السمة عليها. كيف يمكنني حتى الآن حتى الآن دون أن يشكو Powershell من عدم وجود هذه المعلمات المطلوبة؟

ويرجع الفضل في ذلك مسبقا لأفكارك.


تحديث

أخرجت الجزء الثاني من السؤال الذي أدركت أنني لم أفهم معلمات خط أنابيب ملزمة جيدا بما فيه الكفاية. اعتقدت خطأ أن معلمات خط أنابيب ملزمة جاءت من السابق cmdlet. التي تنفذ في خط الأنابيب. تأتي فعلا من هدف يجري تمريرها من خلال خط الأنابيب! لقد تمت الإشارة إلى A. المشاركة من قبل كيث هيل للمساعدة في فهم هذا.

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

المحلول

يمكنك تعيين BOOL حقل مثيل (INITE) إلى FALSE في BeginProcessing. ثم تحقق لمعرفة ما إذا كانت المعلمة محددة في النظارة. إذا كان سيتم بعد ذلك استدعاء الطريقة التي تقوم بالوقت مرة واحدة (initme). في ProcessRecord، تحقق من قيمة INIT وإذا كانت خاطئة، فاتصل بالبيتم. يجب أن يقوم InitME بتعيين INIT TO TRUE قبل العودة.

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

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