PowerShell Measure-Object: دليل كامل مع الأمثلة

العد أو حساب الخصائص العددية للكائنات ، مثل الأحرف والكلمات والأسطر في كائنات السلاسل ، يمكن أن يكون محبطًا. لحسن الحظ ، فإن PowerShell Measure-Object cmdlet مستعد للمهمة.

في هذا البرنامج التعليمي ، ستتعرف على قوة cmdlet Measure-Object في أتمتة قياس خصائص الكائن في PowerShell.

ابدأ مباشرة لتعزيز مهارات قياس الكائنات الخاصة بك!

المتطلبات الأساسية

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

عد الملفات والمجلدات

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

يعد cmdlet Measure-Object عدد الملفات والمجلدات في دليل. العدد الدقيق يساعدك في إدارة وتحسين موارد النظام الخاصة بك بشكل أفضل.

لرؤية كيف يعمل cmdlet Measure-Object في عد الملفات والمجلدات:

1. افتح PowerShell وقم بتشغيل الأمر التالي Get-ChildItem لحساب وإرجاع إجمالي عدد الملفات والمجلدات (Measure-Object) في الدليل الحالي.

Get-ChildItem | Measure-Object

الإخراج أدناه يشير إلى وجود 4852 ملفًا ومجلدًا في الدليل الحالي.

Counting the files and folders in the current directory

ربما ترغب في تضمين جميع الملفات والأدلة الفرعية في شجرة الدليل بشكل متكرر. إذا كنت كذلك، ألحق معامل -Recurse كما هو موضح أدناه. Get-ChildItem -Recurse | Measure-Object

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

Get-ChildItem -Directory | Measure-Object

كما يمكنك أن ترى أدناه، العدد الإجمالي الآن أقل (135) لأن الأمر قام فقط بحساب الدلائل، باستثناء جميع الكائنات الأخرى.

Counting the number of directories in the current directory

3. الآن، قم بتشغيل الأمر أدناه لحساب عدد الملفات التنفيذية (.exe) في الدليل الحالي.

معامل -Filter يخبر cmdlet Get-ChildItem بتصفية النتائج وإرجاع القوائم التي تحمل الامتداد الذي حددته (أي *.txt، *.jpg، *.csv).

Get-ChildItem -Filter *.exe | Measure-Object
Counting the number of executable files in a directory

قياس حجم الملفات

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

قم بتشغيل الكود أدناه لاسترجاع جميع الملفات في الدليل الحالي (Get-ChildItem) وعرض (Write-Host) أطوالها الافتراضية بالبايت.

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

# قم بتعيين الحد الأدنى لحجم الملف المتوسط
$threshold = 5000000 
# قياس حجم كل ملف في الدليل الحالي
$files = Get-ChildItem | Measure-Object -Property length -Minimum -Maximum -Sum -Average

Write-Host "Minimum file size: $($files.Minimum) bytes"
Write-Host "Maximum file size: $($files.Maximum) bytes"
Write-Host "Sum of file sizes: $($files.Sum) bytes"
Write-Host "Average file size: $($files.Average) bytes"
Write-Host "Total number of files: $($files.Count)"

# التحقق مما إذا كان حجم الملف المتوسط أعلى أم أدنى من الحد
if ($files.Average -ge $threshold) {
    # إذا كان حجم الملف المتوسط أعلى من الحد، قم بتشغيل صوت عالٍ
    [console]::beep(1000, 500)
} else {
    # إذا كان حجم الملف المتوسط أقل من الحد، قم بتشغيل صوت منخفض
    [console]::beep(500, 500)
}

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

Measuring file sizes

ربما لا يكون لصق الكود في وحدة التحكم هو أمرك. إذا كان الأمر كذلك ، فقم بحفظ الكود في ملف سكريبت باورشيل وتشغيله.

الآن ، قم بتشغيل الأوامر التالية للحصول على ملف في الدليل الحالي ، حيث (Where-Object) حجمه ($_.Length) متساوٍ (-eq) لأقصى حجم للملف ($files.Maximum).

# احصل على الملف وقم بتخزينه بنفس حجم $files.Maximum
$max = Get-ChildItem | Where-Object -FilterScript {$_.Length -eq $files.Maximum}
# عرض قيمة الحجم الأقصى ($files.Maximum) والملف ذو ذلك الحجم
Write-Host "Maximum file size: $($files.Maximum) bytes `nFile: $max"

الإخراج أدناه يظهر اسم الملف الأكبر في الدليل الحالي.

Getting the most extensive file in size

قياس محتويات ملف نصي

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

تشغيل الكود أدناه لقياس محتوى ملف النص (Measure-Object) بواسطة -Character، -Line، و -Word، وإخراج (Write-Host) القياسات.

تأكد من تغيير قيم المتغيرات $file_path و $file_content بالقيم التي تفضلها.

# تعريف مسار الملف والمحتوى
$file_path = "C:\Temp\measure-object.txt"
$file_content = "One fish, two fishes, three fishes"

# إنشاء الملف ضد مسار الملف والمحتوى المعرفة
Set-Content -Path $file_path -Value $file_content

# قياس محتويات ملف النص
$measurements = Get-Content -Path $file_path | Measure-Object -Character -Line -Word

# إخراج القياسات إلى وحدة التحكم
Write-Host "The file '$file_path' contains $($measurements.Lines) lines, $($measurements.Words) words, and $($measurements.Characters) characters."
Measuring text file contents

قياس القيم المنطقية

القيم المنطقية هي القيم التي يمكن أن تكون صحيحة أو خاطئة فقط. في PowerShell، تُستخدم القيم المنطقية في كثير من الأحيان للتحكم في تدفق النص، وتحديد شرط (صحيح أو خاطئ)، أو للإشارة إلى نجاح أو فشل الأمر.

يمكن أن يكون قياس القيم المنطقية مفيدًا في مختلف السيناريوهات، مثل:

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

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

لمعرفة كيفية عمل قياس القيم المنطقية:

قم بتشغيل الأوامر التالية لحساب مجموع القيم المنطقية (قيم صحيحة بشكل افتراضي) في المصفوفة ($values).

# قم بتعريف مصفوفة من القيم المنطقية ($true و $false).
$values = $true,$false,$false,$true,$true,$true,$false,$false,$true
# قم بقياس (عد) القيم المنطقية (قيم صحيحة بشكل افتراضي).
$values | Measure-Object -Sum

أدناه، إجمالي العدد من القيم المنطقية هو تسعة (9)، بينما ال مجموع هو خمسة (5) حيث يتم عد القيم الصحيحة فقط.

ماذا عن القيم الخاطئة؟ انتقل إلى الخطوة التالية وقم بتشغيل عدة أوامر إضافية.

Counting the number of true values in an array

الآن، قم بتشغيل الكود أدناه لطرح مجموع القيم الصحيحة ($trueCount) من إجمالي عدد القيم المنطقية ($count). الفرق من المعادلة هو إجمالي القيم الخاطئة ($falseCount).

# احصل على العدد الإجمالي للقيم المنطقية في مصفوفة
$count = $values.Count
# احصل على مجموع القيم الصحيحة
$trueCount = ($values | Measure-Object -Sum).Sum
# اطرح مجموع القيم الصحيحة من إجمالي القيم المنطقية
# للحصول على إجمالي القيم الخاطئة
$falseCount = $count - $trueCount
# عرض إجمالي العددين للقيم الصحيحة والخاطئة
Write-Host "Number of true values: $trueCount"
Write-Host "Number of false values: $falseCount"
Counting the number of false values

إذا كان قياس القيم البولية مهمة يومية، فيمكنك إنشاء دالة يمكنك استدعائها في أي وقت لتنفيذ المهمة.

قياس الجداول الخاشعة

الجداول الخاشعة في PowerShell (مجموعة من أزواج المفتاح والقيمة) تسمح لك بتخزين واسترجاع البيانات بسرعة وكفاءة. إذا كنت بحاجة إلى معرفة عدد العناصر في جدول خاشع أو القيم القصوى والدنيا، فاسمح لأمر Measure-Object بقياس الجداول الخاشعة الخاصة بك.

قم بتشغيل الأوامر أدناه للعثور على قيمتي الخاصية Num بأقل وأعلى قيمة في جدول الخاشع ($MyHastable) الخاص بك.

# إنشاء جدول خاشع يحتوي على ثلاثة جداول خاشعة، كل منها يحتوي على خاصية Num.
$MyHashtable = @(@{Num=10}, @{Num=20}, @{Num=30})
# قم بقياس خاصية Num في الجدول الخاشع بواسطة الحد الأدنى والحد الأعلى.
$Stats = $MyHashtable | Measure-Object -Minimum -Maximum Num
# عرض قياسات الجدول الخاشع
$Stats
Measuring hashtables

قياسات الانحراف المعياري

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

يقيس انحراف المعيار التباين أو انتشار قيم مجموعة البيانات عن القيمة المتوسطة. يتم حساب هذا القياس عن طريق العثور على الجذر التربيعي للتشتت في البيانات، والذي هو متوسط ​​الفروق المربعة عن القيمة المتوسطة.

قم بتشغيل الكود أدناه لحساب وعرض -المتوسط و -انحراف المعيار لمصفوفة من الأرقام المخزنة في المتغير $Numbers.

# قم بتعريف مصفوفة من الأرقام
$Numbers = 10, 20, 30, 40, 50

# حساب المتوسط وانحراف المعيار للأرقام
$Average = ($Numbers | Measure-Object -Average).Average
$StdDev = ($Numbers | Measure-Object -StandardDeviation).StandardDeviation

# إخراج النتائج
"Average: $Average"
"Standard deviation: $StdDev"

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

يتم حساب المتوسط ​​بجمع جميع الأرقام في مجموعة البيانات وقسمتها على إجمالي عدد القيم. في هذا المثال، مجموعة البيانات هي {10، 20، 30، 40، 50} بمجموع 150، وخمسة أرقام (5) في المجموعة.

وبالتالي، يتم حساب المتوسط ​​أدناه، والذي هو 30.

Average = (10 + 20 + 30 + 40 + 50) / 5 = 30

من ناحية أخرى، يقيس انحراف المعيار انتشار أو تشتت مجموعة من البيانات. يتم حساب انحراف المعيار كما يلي:

1. Find the difference between each data point and the average:
   10 - 30 = -20
   20 - 30 = -10
   30 - 30 = 0
   40 - 30 = 10
   50 - 30 = 20
   
2. Square each of these differences:
   (-20)^2 = 400
   (-10)^2 = 100
   0^2 = 0
   10^2 = 100
   20^2 = 400
   
3. Add up all the squared differences:
   400 + 100 + 0 + 100 + 400 = 1000
   
4. Divide the sum of squared differences by the total number of values:
   1000 / 5 = 200
   
5. Take the square root of the result:
   sqrt(200) = 14.142135623731
   
The standard deviation of this set of data is approximately 14.14. But 
in this case, the result is 15.8113883008419 
because of floating-point arithmetic limitations in computers.
Measuring the standard deviation

الختام

تحديد البيانات هو مهمة أساسية، وأمر الـ PowerShell Measure-Object هو أداة قوية لإتمام هذه المهمة. وفي هذا البرنامج التعليمي، تعلمت كيفية قياس البيانات بعدة طرق. سواء كنت تعمل مع ملفات، محتويات ملف نصي، قيم بوليانية، سلاسل نصية، مصفوفات، أو جداول تجزئة، يمكن أن يوفر لك قياسها رؤى قيمة.

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

بهذه المعرفة الجديدة، لماذا لا توسع مجموعة أدوات PowerShell الخاصة بك وتضيف Compare-Object إلى تجهيزك؟

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