כלי PowerShell Measure-Object: מדריך מלא עם דוגמאות

ספירת או חישוב מאפיינים נומריים של אובייקטים, כמו תווים, מילים ושורות באובייקטי מחרוזת, יכולה להיות מעצבנת. מאושרת לך ה-Measure-Object ב-PowerShell לכך.

במדריך זה, תלמד את הכוח של ה-Measure-Object באוטומציה של מאפייני אובייקט ב-PowerShell.

התחל לשפר את מיומנויות המדידה שלך באובייקטים!

דרישות מוקדמות

מדריך זה הוא מצגת ידיים. כדי לעקוב, תצטרך מערכת עם PowerShell מותקן. מדריך זה משתמש ב- Windows 10 עם PowerShell v7.

ספירת קבצים ותיקיות

לדעת מספר הקבצים והתיקיות בתיקייה יכול להיות מועיל בסקירות שונות. דוגמה אחת היא כאשר נדרש לנטר את גודל התיקייה או לבדוק את מספר הקבצים בתיקייה.

הפקודה Measure-Object מספרת את מספר הקבצים והתיקיות בתיקייה. הספירה המדויקת עוזרת לניהול ולייעוץ יעילים יותר של משאבי המערכת שלך.

כדי לראות כיצד הפקודה 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 מגיד ל-Get-ChildItem לסנן את התוצאות ולהחזיר רק את הקבצים עם הסיומת שאתה מציין (כמו *.txt, *.jpg, *.csv).

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

מדידת גדלי קבצים

מדידת אורך וגודל של עצמים יכולה לעזור לנהל בצורה טובה יותר את המערכת שלך, מכיוון שקבצים גדולים משפיעים על ביצועי המערכת. בנוסף לספירת המאפיינים, ניתן גם למדוד את האורך והגודל של עצמים באמצעות פקודת 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

אולי הדבקת הקוד למסוף אינה הדרך שלך. אם כך, שמור את הקוד לקובץ סקריפט של PowerShell והפעל אותו.

עכשיו, הפעל את הפקודות הבאות כדי לקבל קובץ בתיקייה הנוכחית, שבו (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 להעדפתכם.

# Define the file path and content
$file_path = "C:\Temp\measure-object.txt"
$file_content = "One fish, two fishes, three fishes"

# Create the file against the defined file path and content
Set-Content -Path $file_path -Value $file_content

# Measure the contents of the text file
$measurements = Get-Content -Path $file_path | Measure-Object -Character -Line -Word

# Output the measurements to the console
Write-Host "The file '$file_path' contains $($measurements.Lines) lines, $($measurements.Words) words, and $($measurements.Characters) characters."
Measuring text file contents

מדידת ערכי בוליאניים

ערכי בוליאניים הם ערכים שיכולים להיות רק אמת או שקר. ב-PowerShell, ערכי בוליאניים משמשים לשליטה בזרימת תסריט, לקביעת תנאי (אמת או שקר), או לציון הצלחה או כישלון של פקודה.

מדידת ערכי בוליאניים יכולה להיות שימושית בסיטואציות שונות, כגון:

  • ספירת מספר הערכים האמת או השקר בסט נתונים.
  • קביעת האחוז המהווה הערכים האמתיים מול המספר הכולל של הערכים.

מידע זה יכול לסייע בקבלת החלטות מושכלות בעיבוד או ניתוח של נתונים.

כדי לראות איך מדידת ערכי בוליאניים עובדת:

שוחזרו את הפקודות הבאות כדי לספור את סכום הערכים הבוליאניים (ערכים נכונים כברירת מחדל) במערך (\texttt{\$values}).

# הגדר מערך של ערכים בוליאניים (\$true ו-\$false).
$values = $true,$false,$false,$true,$true,$true,$false,$false,$true
# מדוד (ספור) את הערכים הבוליאניים (ערכים נכונים כברירת מחדל).
$values | Measure-Object -Sum

למטה, הסכום Count של הערכים הבוליאניים הוא תשעה (9), והסכום Sum הוא חמישה (5) מאחר ורק הערכים הנכונים נספרים.

ומה עם הערכים השקרניים? קפוץ לשלב הבא והרץ עוד כמה פקודות.

Counting the number of true values in an array

עכשיו, הרץ את הקוד למטה כדי לחשב את הפער בין סכום הערכים הנכונים (\texttt{\$trueCount}) לבין סך הערכים הבוליאניים הכולל (\texttt{\$count}). ההבחנה מתוך המשוואה היא סך הערכים השקרניים הכולל (\texttt{\$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

אם מדידת ערכים בוליאניים היא משימה יומית, תוכל ליצור פונקציה שתוכל לקרוא בכל עת כדי לבצע את המשימה.

מדידת Hashtables

Hashtables ב-PowerShell (אוסף של זוגות מפתח-ערך) מאפשרות לך לאחסן ולאחזר נתונים במהירות וביעילות. אם אתה זקוק למספר הפריטים ב- hashtable או לערכים המקסימליים והמינימליים, השתמש ב־Measure-Object כדי למדוד את ה-hashtable שלך.

הפעל את הפקודות למציאת ערכי -Minimum ו־-Maximum של המאפיין Num ב-hashtable שלך ($MyHastable).

# צור hashtable הכוללת שלוש hashtables, כל אחת עם מאפיין Num.
$MyHashtable = @(@{Num=10}, @{Num=20}, @{Num=30})
# מדוד את המאפיין Num של ה-hashtable לפי מינימום ומקסימום.
$Stats = $MyHashtable | Measure-Object -Minimum -Maximum Num
# הצג את מדידות ה-hashtable
$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/