الصفحة الرئيسية » howto » تعلم كيفية تعلم كيفية استخدام الكائنات في PowerShell

    تعلم كيفية تعلم كيفية استخدام الكائنات في PowerShell

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

    تأكد من قراءة المقالات السابقة في السلسلة:

    • تعلم كيفية أتمتة ويندوز مع PowerShell
    • تعلم استخدام Cmdlets في PowerShell

    وتنبقي لبقية المسلسل طوال الأسبوع.

    شاء

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

    تستفيد PowerShell من إطار .Net الأساسي وتتخذ نهجًا مختلفًا ، وذلك باستخدام الكائنات بدلاً من النص. الأشياء هي مجرد تمثيل لشيء ما. وهي عبارة عن مجموعة من الأجزاء والإجراءات لاستخدامها. دعونا نلقي نظرة على أجزاء من الدراجة وكيف نستخدمها.

    الكائنات الموجودة في .Net هي نفسها كثيرًا باستثناء اختلافين صغيرين: تسمى "الأجزاء" الخصائص وتسمى "التعليمات" أساليب. إذا أردنا تمثيل خدمة Windows ككائن ، فقد نقرر أنه من المناسب وصفها باستخدام ثلاث خصائص: اسم الخدمة والدولة والوصف. نحتاج أيضًا إلى التفاعل مع الخدمة ، لذا قد نعطي الكائن طريقة "البدء" و "التوقف" و "الإيقاف المؤقت".

    يمكنك رؤية خصائص وأساليب كائن ما عبر تمريرها إلى أمر Get-Member. الكائنات التي تكون مخرجات PowerShell cmdlet بها أنواع أساسية إلى حد كبير من إطار .Net ، ولكن يمكنك إنشاء كائنات خاصة بك إذا كنت بحاجة إلى استخدام لغة مثل C # أو استخدام نوع PSObject.

    خط الأنابيب

    هناك الكثير من قذائف لينكس مع خط أنابيب ، مما يسمح لك بإرسال النص الذي يخرجه أحد الأوامر كمدخل إلى الأمر التالي في خط الأنابيب. يأخذ PowerShell هذا إلى المستوى التالي من خلال السماح لك بأخذ الأشياء التي تخرجها cmdlet واحدة وتمريرها كإدخال إلى cmdlet التالي في خط الأنابيب. تكمن الخدعة في معرفة نوع الكائن الذي يتم إرجاع أمر cmdlet إليه ، وهو أمر سهل جدًا عند استخدام الأمر cmdlet لـ Get-Member.

    الحصول على الخدمة | الحصول على لعضو

    لأسباب خارج نطاق هذه المقالة ، يتم استدعاء الخصائص والطرق بشكل مشترك لأعضاء الفئة ، وهو ما يفسر سبب استخدام cmdlet Get-Member للحصول على قائمة بجميع الطرق والخصائص التي يمتلكها الكائن. ومع ذلك ، يُرجع cmdlet Get-Member أيضًا معلومة هامة أخرى ، وهي نوع الكائن الأساسي. في لقطة الشاشة أعلاه ، يمكننا أن نرى أن Get-Service تقوم بإرجاع كائنات من النوع:

    System.ServiceProcess.ServiceController

    نظرًا لأن PowerShell يتعامل مع الكائنات وليس نصًا ، لا يمكن ربط كل أوامر cmdlets معًا باستخدام خط الأنابيب [1]. هذا يعني أننا بحاجة إلى العثور على أمر cmdlet الذي يتطلع إلى قبول كائن System.ServiceProcess.ServiceController من خط الأنابيب.

    الحصول على الأوامر -ParameterType System.ServiceProcess.ServiceController

    لاحظ أن هناك أمر cmdlet يُسمى Stop-Service ؛ دعونا نلقي نظرة على المساعدة لذلك.

    Get-Help -Name Stop-Service

    يبدو أن المعلمة InputObject تأخذ صفيفًا من كائنات ServiceController كمدخل. عادةً ، إذا كنت ترى معلمة تسمى InputObject ، فإنها تقبل الإدخال من Pipeline ، ولكن فقط للتأكد من دعنا نلقي نظرة على المساعدة الكاملة لهذه المعلمة.

    Get-Help -Name Stop-Service -Full

    شكوكنا كانت صحيحة. إذن في هذه المرحلة ، نعرف ما يلي:

    • إرجاع الخدمة إرجاع كائنات ServiceController
    • يحتوي Stop-Service على معلمة تسمى InputObject التي تقبل واحد أو أكثر من ServiceControllers كإدخال.
    • تقبل المعلمة InputObject إدخال خط أنابيب.

    باستخدام هذه المعلومات ، يمكننا القيام بما يلي:

    Get-Service -Name "Apple Mobile Device" | خدمة محطة

    هذا كل ما في هذا الوقت الناس. في المرة القادمة ننظر إلى كيف يمكننا تنسيق وتصفية ومقارنة الأشياء في خط الأنابيب.

    واجب منزلي

    • تقرأ على خط أنابيب الكائن

    إذا كان لديك أي أسئلة يمكنك تغريدة لي @ taybgibb ، أو مجرد ترك تعليق.