פוורשל: בחירת אובייקט בקלות – מדריך למתחילים

פוורשל הוא כלי עוצמתי לניהול נתונים, אך גם בדרך כלל מספק יתרון מידע בבת אחת. כפי שאתה יודע, יתרון מידע יכול להיות מדאיג וקשה לעבור איתו. אך אל תדאג. cmdlet של PowerShell Select-Object יהיה מועיל.

במדריך זה, תלמד את היסודות של cmdlet Select-Object כדי להגביל או לסנן תוצאות בדרכים רבות.

תמשיך והתחל בניהול נתונים ללא כאבי ראש!

תנאים מוקדמים

מדריך זה כולל מצגות פרקטיות. כדי להמשיך, וודא שיש לך מערכת עם PowerShell מותקן. מדריך זה משתמש בווינדוס 10 עם PowerShell 7, אך כל גרסה מודרנית אחרת אמורה לעבוד גם כן.

מהו cmdlet Select-Object של PowerShell?

cmdlet 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.
  • ערוץ: צור מאפיין מחושב חדש עם הקוד Name Memory (MB), המחשב את שימוש הזיכרון של כל תהליך במגה-בתים. שימוש הזיכרון מחושב באמצעות ביטוי Expression שמחלק את המאפיין WorkingSet ב-1MB. כל ביטוי תקין של PowerShell יעבוד ביצירת מאפיין מחושב.
  • הדפס את כל תהליכי הריצה שנאצגו בסדר -Descending לפי המאפיין המחושב Memory (MB).
Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

אי הצגת מאפיין מסוים

במציאות, תוצאות של פקודת Select-Object עשויות לכלול מידע רגיש, כגון שמות משתמש וסיסמאות. איך למנוע מכך?

כדי למנוע הצגת נתונים רגישים בפלט, הוסף את הפרמטר -ExcludeProperty כדי לא לכלול מאפיין מסוים בפלט.

הפעל את הפקודה הבאה כדי לבצע את המשימות הבאות:

  • קבל רשימה של כל הקבצים והתיקיות (Get-ChildItem) בתיקייה C:\\ באופן רקורסיבי (-Recurse).
  • העברת הפלט ל־cmdlet של Select-Object כדי לבחור את המאפיינים Name, Length, ו־LastWriteTime.
  • אפשר להשתמש ב־-ExcludeProperty כדי להוציא את המאפיין FullName מהפלט. בכך נמנע מהמסלולים המלאים להופיע בפלט, שעלולים לכלול מידע סודי.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

דילוג על מספר האובייקטים הראשון או האחרון

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

ב־PowerShell, cmdlet של Select-Object מספק שני פרמטרים שמאפשרים לך להתעלם מהאובייקט הראשון (-Skip) והאחרון (-SkipLast) בפלט, בהתאמה.

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

הרץ את הפקודה הבאה כדי לקבל את כל תהליכי הריצה (Get-Process), אך -Skip את המספר הראשון של 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/