باورشيل Select-Object بسيط: دليل المبتدئين

PowerShell هو أداة قوية لإدارة البيانات، ولكنها عادة ما توفر الكثير من المعلومات في وقت واحد. كما تعلم، يمكن أن تكون كمية المعلومات الكبيرة مرهقة وصعبة لتحليلها. لا داعي للقلق، على أي حال. سيكون أمرًا مفيدًا أداة PowerShell Select-Object.

في هذا البرنامج التعليمي، ستتعلم أساسيات أمر Select-Object لتحديد أو تصفية النتائج بعدة طرق.

استمر في القراءة وابدأ في إدارة البيانات بسهولة!

المتطلبات المسبقة

يتضمن هذا البرنامج التعليمي عروضًا عملية. لمتابعة، تأكد من أن لديك نظامًا مع PowerShell مثبتًا. يستخدم هذا البرنامج التعليمي Windows 10 مع PowerShell 7، ولكن يجب أن تعمل أي إصدار حديث أيضًا.

ما هو أمر PowerShell Select-Object؟

يبسط أمر Select-Object إدارة البيانات عن طريق السماح لك باختيار خصائص محددة من كائن أو مجموعة بيانات. في الوقت نفسه، يمكنك إعادة تسمية الخصائص أو إنشاء خصائص حسابية استنادًا إلى الخصائص الحالية.

الصيغة الأساسية لـ Select-Object هي كما يلي: حيث:

Parameter Function
-InputObject Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet.
Property Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas.
Optional Parameters Allows you to refine your selection, such as selecting a certain number of objects or skipping objects.
Select-Object [-InputObject] [Property] [Optional Parameters]

تحديد الكائنات حسب الخصائص

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

لنفترض أن لديك قائمة من العمليات الجارية على جهاز الكمبيوتر الخاص بك، ولكنك ترغب فقط في رؤية أسماء كل عملية. سيقوم تحديد خاصية Name لأمر Select-Object بالقيام بالعملية.

افتح PowerShell وقم بتشغيل الأمر التالي Get-Process لاسترجاع وطباعة قائمة بجميع العمليات فقط (Select-Object) بواسطة Name.

Get-Process | Select-Object Name
Selecting objects by property

بالإضافة إلى عمليات التشغيل، يتيح لك الأمر Select-Object العمل على ملف CSV. لنفترض أن لديك ملف CSV به العديد من الأعمدة ولكنك تحتاج فقط إلى بعضها. في هذه الحالة، دع أمر Select-Object يختار فقط الأعمدة ذات الصلة حتى تتمكن من معالجة وتحليل البيانات.

الآن، قم بتشغيل الأمر التالي لتحديد خصائص متعددة (Select-Object): Name و CPU (مفصولة بفواصل). تساعد هذه الميزة عند العمل مع مجموعات بيانات كبيرة حيث تحتاج فقط إلى بعض الخصائص من كل كائن.

بالإضافة إلى ذلك، يقوم هذا الأمر أيضًا بفرز قائمة الكائنات (Sort-Object) بترتيب -Descending باستخدام خاصية CPU كمرجع.

Get-Process | Select-Object Name, CPU | Sort-Object -Descending CPU

أدناه، يمكنك رؤية العمليات المدرجة، بدءًا من أكثرها استهلاكًا للموارد، Google Chrome (إذا كنت قد قمت بتثبيته).

Selecting multiple properties

إنشاء خاصية محسوبة

عند البحث عن خصائص تتناسب أفضل مع احتياجاتك، قم بإنشاء خاصية محسوبة. لماذا؟ تتيح لك الخصائص المحسوبة التلاعب وتحويل البيانات، وتوحيد الخصائص الحالية، وأداء العمليات الرياضية، أو تنسيق البيانات بطريقة معينة.

لإنشاء خاصية محسوبة، يجب عليك تحديد اسم خاصية جديد وتعبير يحدد كيفية حساب قيمة الخاصية:

قم بتشغيل الأمر أدناه لأداء الإجراءات التالية:

  • استرجاع قائمة العمليات الجارية (Get-Process)، محددًا فقط (Select-Object) خصائص Name و CPU.
  • أنشئ خاصية محسوبة جديدة بالاسم “الذاكرة (ميجابايت)” تحسب استخدام الذاكرة لكل عملية بالميجابايت. يتم حساب استخدام الذاكرة باستخدام تعبير يقوم بقسمة خاصية “الذاكرة العاملة” على “1 ميجابايت”. أي تعبير صالح في بوويرشيل يعمل في إنشاء خاصية محسوبة.
  • يطبع كل العمليات الجارية المسترجعة بترتيب تنازلي بواسطة الخاصية المحسوبة “الذاكرة (ميجابايت)”.
Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

استثناء خاصية محددة

في الحياة الواقعية، قد تحتوي نتائج أمر “اختيار-كائن” على معلومات حساسة، مثل أسماء المستخدمين وكلمات المرور. كيف يمكن تجنب هذا الخطر؟

لمنع عرض البيانات الحساسة في الناتج، قم بإضافة معلمة “-استثناءالخاصية” لاستثناء خاصية محددة من الناتج.

قم بتشغيل الأمر التالي لأداء المهام التالية:

  • استرجاع قائمة بجميع الملفات والمجلدات (احصل-علىعنصرطفل) في الدليل “C:\\” بشكل تكراري (-تكرار).
  • توجيه الناتج إلى cmdlet Select-Object لتحديد الخصائص Name، Length، و LastWriteTime.
  • استبعاد الخاصية FullName من الناتج باستخدام (-ExcludeProperty). وهذا يمنع عرض المسارات الكاملة في الناتج، مما قد يحتوي على معلومات سرية.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

تخطي العدد الأول أو الأخير من الكائنات

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

في PowerShell، يوفر cmdlet Select-Object معلمات تسمح لك باستبعاد العدد الأول (-Skip) والعدد الأخير (-SkipLast) من الكائنات في الناتج، على التوالي.

لرؤية كيفية تخطي العديد من الكائنات في الناتج:

قم بتشغيل الأمر التالي للحصول على جميع العمليات الجارية (Get-Process) لكن قم بتخطي العدد الأول 100 من الكائنات المرجعة.

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

Get-Process | Select-Object -Skip 100
Skipping the first 100 objects

الآن، قم بتشغيل الأمر التالي للحصول على قائمة بمحتويات دليل العمل (Get-ChildItem) ولكن قم بتخطي العدد الأخير (-SkipLast) 100 من الكائنات المرجعة.

Get-ChildItem | Select-Object -SkipLast 100
Skipping the last 100 objects

تحديد العدد الأول أو الأخير من الكائنات

بالإضافة إلى تخطي العناصر الأولى والأخيرة، قد تكون مهتمًا أيضًا بتحديد العناصر الأولى والأخيرة بدلاً من ذلك. يدعم أمر Select-Object هذه الميزة باستخدام المعلمات First و Last التي تتيح لك تخطي كل شيء آخر لتوفير الوقت والموارد.

قم بتشغيل الأمر التالي للحصول على جميع العمليات ولكن اختر (Select-Object) فقط العناصر المُرجعة -First 10.

Get-Process | Select-Object -First 10
Selecting the first 10 objects returned

الآن، قم بتشغيل الأمر أدناه للحصول على جميع محتويات دليل العمل (Get-ChildItem) ولكن اختر (Select-Object) فقط العناصر المُرجعة -Last 10.

Get-ChildItem | Select-Object -Last 10
Selecting the last 10 objects returned

تحديد الكائنات الفريدة حصريًا

أثناء العمل مع مجموعات بيانات أكبر، ستواجه قيم مكررة قد ترغب في استبعادها من الإخراج، وهذا أمر معتاد. لكن الشيء الجيد في أمر Select-Object هو أنه لا يتعين عليك استبعاد القيم المكررة يدويًا.

إضافة المعلمة -Unique تسمح لك باختيار الكائنات الفريدة فقط من الإخراج، مما يبسط تحليلك ويحسن دقة نتائجك.

قم بتشغيل الأمر أدناه لتحديد (Select-Object) وإرجاع الكائنات -First 2.

"1","1","2","3" | Select-Object -First 2

في الأسفل، يمكنك رؤية كائنين مُرجعين بغض النظر عما إذا كان الآخر قيمة مكررة.

Selecting and returning objects with duplicate values

أخيرًا، قم بتشغيل الأمر التالي لإرجاع قيمة -Unique واحدة فقط لكل من الكائنات -First 2 المحددة.

"1","1","2","3" | Select-Object -First 2 -Unique

هذه المرة، يمكنك رؤية مرجع واحد فقط من الكائنات الأولى المُختارة، حيث أن الآخر مكرر فقط. كما تلاحظ، تُثبت هذه النتيجة أن معلمة -Unique مفيدة للتخلص بسرعة من أي كائنات مكررة في بياناتك.

Selecting unique objects exclusively

الاستنتاج

يميل PowerShell إلى إنتاج كمية كبيرة من المعلومات. ولكن في هذا البرنامج التعليمي، تعلمت كيف يساعد أمر Select-Object في PowerShell على تبسيط بياناتك لرؤية المعلومات المطلوبة فقط.

لقد رأيت كيف تتيح لك معلمات مختلفة تحديد واستبعاد البيانات، خاصة القيم المُكررة من الناتج. باستخدام أمر Select-Object، لا يجب أن يكون إدارة كميات كبيرة من البيانات مهمة مرهقة.

في هذه النقطة، يمكنك تحسين نتائجك بسرعة لتكون أكثر ملاءمة للتحليل وإصلاح الأخطاء. ولكن لماذا لا تتعلم كيفية تنسيق خصائصك المحسوبة بعد لتحسين قراءتها واستخدامها؟

Source:
https://adamtheautomator.com/powershell-select-object/