كيفية حساب الكائنات في بوويرشيل

28 مايو 2021 37667 الآراء بوويرشيل العد

هناك العديد من الأسباب التي قد تجعلك ترغب في حساب عدد الكائنات في PowerShell. كمثال ، قد ترغب في حساب عدد رسائل الخطأ في سجل الأحداث.

علاوة على ذلك ، قد ترغب في حساب عدد الملفات في مجلد معين.

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

الدليل مقسم إلى قسمين. في القسم الأول ، ستتعلم كيفية استخدام ملف عدد المشغل أو العامل مع 8 أمثلة مختلفة.

أخيرًا ، في القسم الثاني ، سأعلمك كيفية الاعتماد على قياس الكائن كمدليت.

تصفح مواضيع المنشور

كيف نحسب في PowerShell مع عدد المشغل أو العامل

كما ذكرنا سابقًا في المقدمة ، في هذا القسم الأول ، سوف أعلمك كيفية الاعتماد على عدد المشغل أو العامل . يبدأ القسم بصيغة ملف عدد المشغل أو العامل .

بعد ذلك ، أشارك ثمانية أمثلة لطرق مختلفة يمكنك الاعتماد عليها باستخدام عدد المشغل أو العامل .

بناء جملة بوويرشيل عدد المشغل أو العامل

بناء جملة PowerShell عدد المشغل أو العامل يكون:

(object to count).Count

بوويرشيل عدد المشغل أو العامل من كائن يمكن الوصول إليه عن طريق التفاف الكائن في قوس (). ثم أضف نقطة (.) ، متبوعة بالكلمة ، عدد .

كيفية استخدام بوويرشيل عدد المشغل أو العامل لعد سجلات الأحداث

المثال الأول للتطبيق هو توضيح كيفية حساب سجلات الأحداث.

في هذا المثال ، أريد حساب عدد رسائل الخطأ في ملف نظام تسجيل الدخول في آخر 24 ساعة. يمكنني تشغيل أمر واحد ولكن لتسهيل فهمه ، سأقوم بتفصيله.

تتمثل الخطوة الأولى في حفظ آخر 24 ساعة في متغير باستخدام امتداد الحصول على التاريخ يأمر.

ها هو الأمر ...

$Last24Hours = (Get-Date).AddDays(-1)

أدخل الأمر في PowerShell واضغط على مفتاح الإدخال لتشغيله.

كيفية استخدام طريقة حساب PowerShell لحساب سجلات الأحداث

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

$ErrorLogCount = Get-EventLog -LogName System -After $Last24Hours | Where-Object {$_.EntryType -eq 'Error'}

إذا كنت ترغب في رؤية قائمة برسائل الخطأ ، فقم بتشغيل المتغير $ ErrorLogCount.

$ErrorLogCount

فيما يلي الأوامر في PowerShell ...

لاحظ أن هناك 5 سجلات أخطاء. من السهل حساب هذا - ولكن إذا كانت النتيجة تحتوي على مئات النتائج ، فكيف تحسبها؟

استخدم بوويرشيل عدد المشغل أو العامل ! هذا هو الأمر الأخير الذي يحسب عدد سجلات الأخطاء في نتيجة الأمر الأخير ...

$ErrorLogCount.Count

وكما هو متوقع ، كانت النتيجة 5!

كيفية استخدام طريقة حساب PowerShell لحساب سجلات الأحداث

إذا كنت تريد تشغيل الأوامر في أمر واحد ، فإليك الأمر ...

(Get-EventLog -LogName System -After ((Get-Date).AddDays(-1)) | Where-Object {$_.EntryType -eq 'Error'}).count

النتيجة هي نفسها ...

كيفية استخدام بوويرشيل عدد عامل لعد الملفات في مجلد

تطبيق آخر بوويرشيل عدد الطريقة هي حساب عدد الملفات في مجلد. في هذا القسم ، ستتعلم كيفية حساب عدد الملفات في مجلد.

سوف تكسب أيضًا كيفية حساب الملفات في مجلد وجميع المجلدات الفرعية. أخيرًا ، سوف أعلمك كيفية استخدام PowerShell عدد طريقة حساب الملفات حسب التاريخ.

تتمثل الخطوة الأولى لعد الملفات في المجلد في استخدام ملحق Get-ChildItem الأمر لإرجاع الملفات الموجودة في مجلد. في هذا المثال ، سأحفظ نتيجة الامتداد Get-ChildItem الأمر في متغير يسمى قائمة الملفات .

$filelist = Get-ChildItem -Path 'D:PS-Tutorial' | Where-Object { !($_.PSIsContainer) }

في الجزء الثاني من الأمر ، قمت بتوصيل إخراج ملف Get-ChildItem الأمر ل أين الكائن . ال أين الكائن القيادة لديها! أمام $ _. PSIsContainer - هذا يقول أين الكائن لإرجاع كافة الكائنات باستثناء المجلدات.

هذا هو الأمر في بوويرشيل. لعرض النتائج المحفوظة في المتغير ، قمت بتشغيل المتغير ...

كيفية استخدام طريقة PowerShell Count لحساب عدد الملفات في مجلد

أخيرًا ، لحساب عدد الملفات ، قم بلف النتيجة في PowerShell عدد المشغل أو العامل .

$filelist.Count

تظهر النتيجة أن هناك 37 ملفا.

بالانتقال ، ماذا لو أردنا عد الملفات في المجلد وجميع المجلدات الفرعية؟ هذا يتطلب ببساطة إضافة يعيد تنفيذ المعلمة إلى Get-ChildItem قليلا من الأمر.

هذا هو الأمر المعدل الذي يحسب الملفات في مجلد وجميع مجلداته الفرعية. هذه المرة ، قمت بتشغيل الأمر كأمر واحد.

(Get-ChildItem -Path 'D:PS-Tutorial' -Recurse | Where-Object { !($_.PSIsContainer) }).Count

ها هي النتيجة مع 40 ملفًا.

كيفية استخدام طريقة PowerShell Count لحساب عدد الملفات في مجلد

كيفية استخدام بوويرشيل عدد عامل لعد الملفات في مجلد حسب التاريخ

في القسم الأخير ، أوضحت لك كيفية حساب جميع الملفات في مجلد ومجلدات فرعية.

في هذا القسم ، سأوضح لك كيفية حساب عدد الملفات في مجلد بناءً على التاريخ.

لمساعدتك في فهم هذا المثال ، قم بتشغيل هذا الأمر من مثالنا السابق.

$filelist = Get-ChildItem -Path 'D:PS-Tutorial' | Where-Object { !($_.PSIsContainer) }

الآن ، قم بتشغيل المتغير. تظهر النتيجة أن الملفات لها خاصية تسمى LastWriteTime .

ال LastWriteTime تشير الخاصية إلى آخر مرة تم فيها إنشاء الملف أو تحديثه. المعنى الضمني هو أنه يمكننا تضمين هذه الخاصية في ملف أين الكائن عامل التصفية - بعد ذلك ، قم بإرجاع الملفات التي تم تحديثها أو إنشاؤها في تاريخ محدد فقط.

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

لإنشاء مرشح التاريخ ، قم بتشغيل الأمر أدناه واحفظ النتيجة في متغير ...

$Last24Hours = (Get-Date).AddDays(-1)

ثم استخدم المتغير ، $ الأخيرة 24 ساعة كمرشح إضافي في أين الكائن جانب من الأمر السابق. هنا هو الأمر المحدث.

$filelist = Get-ChildItem -Path 'D:PS-Tutorial' -Recurse | Where-Object { (!($_.PSIsContainer)) -and ($_.  LastWriteTime  -ge $Last24Hours) }

يقدم الأمر مرشحًا جديدًا $ _. LastWriteTime -ge $ Last24Hours. هذا يقارن LastWriteTime لكل ملف مع التاريخ المحفوظ في $ الأخيرة 24 ساعة عامل.

وبعد ذلك ، أي ملف بامتداد LastWriteTime أكبر من أو يساوي (ge) التاريخ في المتغير (آخر 24 ساعة) ، سيتم إرجاعه في النتيجة. ومع ذلك ، فإن أي ملف بامتداد LastWriteTime التي تقع خارج هذا النطاق تتم إزالتها.

كم هو رائع!

أعاد الأمر 3 ملفات فقط!

أخيرًا ، لحساب عدد الملفات الموجودة في هذا المجلد وجميع مجلداته الفرعية التي تم إنشاؤها أو تحديثها خلال الـ 24 ساعة الماضية ، استخدم PowerShell عدد المشغل أو العامل الأمر أدناه:

$filelist.Count

هذه هي النتيجة في PowerShell ...

كيفية استخدام بوويرشيل عدد عامل لعد الكائنات في مصفوفة

في الآونة الأخيرة ، قمت بتحديث مقالنا PowerShell Arrays. في آخر تحديث للمقال ، قمت بإنشاء مصفوفة.

هذا هو النص الذي ينشئ مصفوفة ، محفوظة في متغير ، ArrayList .

$ArrayList = @('Document', 'FileSystem', 'D:PS-Tutorial')

تحتوي مصفوفة PowerShell على ملف عدد ملكية . يمكنك استخدام هذه الخاصية بالطريقة التي استخدمناها بها في الأمثلة السابقة في هذه المقالة.

وبالتالي ، لحساب العناصر الموجودة في مصفوفة PowerShell المحفوظة في ملف ArrayList متغير ، قم بتشغيل الأمر أدناه ...

$ArrayList.Count

النتيجة هي 3 - تأكيد عدد العناصر في صفيفنا!

كيفية استخدام عامل العد بوويرشيل لحساب عدد الكائنات في مصفوفة

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

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

في القسم الأخير من هذا الدليل ، رأيت طرقًا مختلفة لاستخدام PowerShell عدد المشغل أو العامل لعد الأشياء. يعلمك هذا القسم كيفية عد العناصر بامتداد قياس الكائن كمدليت.

كما ترى في الأمثلة في هذا القسم ، فإن ملف قياس الكائن يوفر Cmdlet المزيد من الخيارات لحساب عدد الكائنات.

قبل الأمثلة ، دعنا نبدأ ببناء جملة قياس الكائن كمدليت.

صيغة Cmdlet للقياس والكائن

لمشاهدة الصيغة الكاملة لملف قياس الكائن Cmdlet ، قم بتشغيل الأمر أدناه:

Get-Help Measure-Object

من نتيجة الأمر ، فإن ملف قياس الكائن Cmdlet له تركيبان. فيما يلي النسخ المبسطة للصيغ:

Measure-Object -Property -InputObject -Average -Maximum -Minimum -Sum
Measure-Object -Property -InputObject -Character -IgnoreWhiteSpace -Line -Word

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

في الأقسام الفرعية التالية ، سأناقش أمثلة مختلفة لكيفية الاستخدام قياس الكائن لحساب العناصر في PowerShell.

كيفية استخدام أمر Cmdlet للقياس والكائن لعد الأحرف في سلسلة

في معظم الأوقات ، سيحتاج SysAdmins إلى حساب العدد الإجمالي للعناصر في سلسلة أو كائن PowerShell. ومع ذلك ، في حالات نادرة ، قد يصادف مسؤول النظام مهام PowerShell التلقائية التي تتطلب عدًا أكثر دقة.

على سبيل المثال ، قد يُطلب منك حساب عدد الأحرف في سلسلة. في هذا المثال ، سأعلمك كيفية حساب العدد الإجمالي للأحرف في سلسلة.

للتوضيح ، فإن الحرف هو كائن واحد مثل 1 أو a.

لنبدأ بمثال بسيط للغاية ، لحساب عدد الأحرف في سلسلة الأرقام هذه

123456

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

ها هو الأمر ...

'123456' | Measure-Object -Character

هناك طريقة أخرى لتشغيل الأمر وهي تحديد السلسلة ، 123456 باستخدام متغير InputObject بدلاً من الأنابيب ...

Measure-Object -InputObject '123456' -Character

كلا الأمرين يعطي نفس النتيجة ، 6!

كيفية العد في PowerShell باستخدام Cmdlet للكائن القياس: كيفية استخدام Cmdlet للكائن القياس لعد الأحرف في سلسلة

كيف نحسب شخصية معينة في سلسلة

الآن ، للحصول على مثال أكثر تقدمًا - ماذا لو كنت تريد حساب عدد حرف معين في سلسلة؟

على سبيل المثال ، لنفترض أنك تريد حساب عدد المرات التي يظهر فيها الرقم 2 في هذه السلسلة:

123456225

الخطوة الأولى هي تحويل السلسلة إلى مصفوفة أحرف Unicode. لتحقيق ذلك ، استخدم ToCharArray طريقة .

ها هو الأمر ...

'123456225'.ToCharArray()

ما يفعله الأمر هو تقسيم السلسلة إلى أعضاء من مصفوفة PowerShell. ها هي النتيجة ...

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

في هذا المثال ، نريد حساب كل تكرارات 2. هذا هو الأمر الذي يقوم بهذه المهمة ...

'123456225'.ToCharArray() | Where-Object {$_ -eq '2'}

يقوم الأمر بإرجاع الأحرف التي نريد حسابها فقط.

كيفية العد في PowerShell باستخدام Cmdlet للكائن القياس: كيفية استخدام Cmdlet للكائن القياس لحساب أحرف معينة في سلسلة

أخيرًا ، قم بتوجيه آخر أمر إلى قياس الكائن .

'123456225'.ToCharArray() | Where-Object {$_ -eq '2'} | Measure-Object

تخبرنا النتيجة النهائية أن الحرف 2 ظهر 3 مرات في السلسلة الأصلية ، 123456225.

كما ترى من الأمر الأخير ، تحتوي النتيجة على مجموعة من المعلومات الأخرى. يتضمن أيضًا كلمة Count.

ماذا لو كنت تريد عرض عدد الأحرف بدون هذه المعلومات الأخرى غير ذات الصلة؟

قم ببساطة بإحاطة الأمر السابق بقوس () متبوعًا بنقطة (.). أخيرًا ، أضف الكلمة عدد .

عدد هي الخاصية المميزة في آخر لقطة شاشة. إنه نفس PowerShell عدد ملكية لقد كنا نناقش في هذا الدليل.

('123456225'.ToCharArray() | Where-Object {$_ -eq '2'} | Measure-Object).  Count  

ها أنت ذا ، سهل جدًا!

كيفية العد في PowerShell باستخدام Cmdlet للكائن القياس: كيفية استخدام Cmdlet للكائن القياس لحساب أحرف معينة في سلسلة

كيفية استخدام كائن قياس بوويرشيل لحساب عدد الأسطر في ملف نصي

الأمثلة في هذا القسم تصبح مثيرة!

في هذا القسم الفرعي ، أريد رفع مستوى اللعبة قليلاً. أريد أن أوضح لك كيفية حساب عدد الأسطر في ملف نصي.

لنفترض أنك تريد حساب عدد الأسطر في الملف النصي الموضح في لقطة الشاشة هذه ...

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

ها هو الأمر الأخير ...

Get-Content -Path D:PS-Tutorialfolder-names.txt | Measure-Object -Line

وها هي النتيجة ... 4 أسطر في ملف نصي ...

كيفية استخدام كائن قياس بوويرشيل لحساب عدد الأسطر في ملف نصي

بدلاً من ذلك ، إذا كنت تريد حساب عدد الكلمات في الملف النصي ، فاستبدل ملف خط مع المعلمة كلمة .

Get-Content -Path D:PS-Tutorialfolder-names.txt | Measure-Object -  Word  

من قبيل الصدفة ، هناك أيضًا 4 كلمات.

كيفية استخدام Cmdlet قياس الكائن بوويرشيل لحساب عدد الأسطر في ملف CSV

في هذا المثال التالي ، أريد حساب عدد الأسطر في ملف CSV هذا. كما ترى ، هناك 15 سطراً.

كيفية استخدام Cmdlet قياس الكائن بوويرشيل لحساب عدد الأسطر في ملف CSV

يشبه الأسلوب حساب عدد الأسطر في ملف نصي. ومع ذلك ، فهو أقل تعقيدًا.

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

ها هو الأمر الأخير ...

Import-Csv D:PS-TutorialEventLogReport.csv | Measure-Object

والنتيجة ...

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

(Import-Csv D:PS-TutorialEventLogReport.csv | Measure-Object).Count

كيفية استخدام PowerShell Measure-Object Cmdlet لحساب تكرارات السلسلة في ملف

هذا مثال آخر مثير على PowerShell Count! في هذا القسم ، أريد حساب عدد تكرارات كلمة بايت في الملف النصي في لقطة الشاشة هذه ...

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

Get-Content -Path D:PS-Tutorialfolder-names.txt

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

Get-Content -Path D:PS-Tutorialfolder-names.txt | Where-Object {$_ -eq 'Bytes'}

أخيرًا ، قم بتوجيه نتيجة الأمر الأخير إلى قياس الكائن .

Get-Content -Path D:PS-Tutorialfolder-names.txt | Where-Object {$_ -eq 'Bytes'} | Measure-Object

لعرض النتيجة فقط ، قم بتعديل الأمر كما هو موضح أدناه ..

(Get-Content -Path D:PS-Tutorialfolder-names.txt | Where-Object {$_ -eq 'Bytes'} | Measure-Object).Count

النتيجة 3.

هذا كل شيء ، مقالنا المحدث عن PowerShell! آمل أن تجد أنه من المفيد.

إذا وجدت هذه المقالة مفيدة ، يرجى التصويت نعم إلى هل كان هذا المنشور سؤالًا مفيدًا أدناه.

بدلاً من ذلك ، يمكنك طرح سؤال أو ترك تعليق أو تقديم المزيد من التعليقات باستخدام نموذج 'ترك الرد' الموجود في نهاية هذه الصفحة.

أخيرًا ، لمزيد من مناطق S PowerShell tech ، تفضل بزيارة صفحة دليل Windows PowerShell How-To. قد تجد أيضًا صفحة العمل من الصفحة الرئيسية الخاصة بنا مفيدة جدًا.

المراجع وقراءات إضافية

  1. قياس الكائن
  2. حول الأساليب
  3. 18 أوامر Powershell الأكثر فائدة لمسؤولي Windows
  4. كيفية استخراج سلسلة فرعية Powershell من سلسلة