פוורשל הוא כלי עוצמתי לניהול נתונים, אך גם בדרך כלל מספק יתרון מידע בבת אחת. כפי שאתה יודע, יתרון מידע יכול להיות מדאיג וקשה לעבור איתו. אך אל תדאג. 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
, למה לא להתחיל עם אחד מהמקרים השגרתיים שלה? התחל את המדריך הזה על ידי בחירת מאפיין מסוים מאובייקט באמצעות פקודת ה- Select-Object
.
נניח שיש לך רשימה של תהליכים שרצים על המחשב שלך, אך אתה רוצה לראות רק את שמות כל תהליך. המפריט של מאפיין Name
לפקודת ה- Select-Object
יעשה את העבודה.
פתח את PowerShell והפעל את הפקודה הבאה Get-Process
כדי לאחזר ולהדפיס רשימה של כל התהליכים רק (Select-Object
) לפי Name
.

בנוסף לתהליכים בריצה, פקודת ה-
Select-Object
מאפשרת לך לעבוד על קובץ CSV. נניח שיש לך קובץ CSV עם הרבה עמודות אך אתה צריך רק כמה מהם. במקרה כזה, הקפד שפקודת ה-Select-Object
תבחר רק את העמודות הרלוונטיות כך שתוכל לטפל ולנתח את הנתונים.
עכשיו, הפעל את הפקודה הבאה כדי לבחור מאפיינים מרובים (Select-Object
): Name
ו־CPU
(מופרדים בפסיקים). תכונה זו מסייעת כאשר עובדים עם מערכות נתונים גדולות שבהן נדרשים רק חלק מהמאפיינים של כל אובייקט.
בנוסף, הפקודה גם ממיינת את רשימת האובייקטים (Sort-Object
) בסדר יורד (-Descending
) לפי המאפיין CPU
כנקודת התייחסות.
למטה, תוכל לראות את התהליכים שנמצאים ברשימה, התחלקות מהתהליך המשאבי הגבוה ביותר, Google Chrome (אם מותקן על המחשב שלך).

יצירת מאפיין מחושב
כאשר אתה מחפש מאפיינים שמתאימים טוב יותר לצורכיך, שקול ליצור מאפיין מחושב. למה? מאפיינים מחושבים מאפשרים לך לטפל ולהמיר נתונים, לשלב מאפיינים קיימים, לבצע פעולות מתמטיות או לעצב נתונים בדרך ספציפית.
כדי ליצור מאפיין מחושב, עליך לציין שם חדש למאפיין וביטוי שמגדיר איך לחשב את ערך המאפיין:
הרץ את הפקודה למטה כדי לבצע את הפעולות הבאות:
- אחזור רשימת תהליכים רצים (
Get-Process
), ובחירה רק של (Select-Object
) המאפייניםName
ו־CPU
. - ערוץ: צור מאפיין מחושב חדש עם הקוד
Name
Memory (MB)
, המחשב את שימוש הזיכרון של כל תהליך במגה-בתים. שימוש הזיכרון מחושב באמצעות ביטויExpression
שמחלק את המאפייןWorkingSet
ב-1MB
. כל ביטוי תקין של PowerShell יעבוד ביצירת מאפיין מחושב. - הדפס את כל תהליכי הריצה שנאצגו בסדר
-Descending
לפי המאפיין המחושבMemory (MB)
.

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

דילוג על מספר האובייקטים הראשון או האחרון
בעבודה עם קבצים עצומים, למצוא את המידע שאתה צריך יכול להיות כמו לחפש יהלום במכרה פחם. אבל למה לבזבז זמן על סינון של נתונים לא רלוונטיים?
ב־PowerShell, cmdlet של Select-Object
מספק שני פרמטרים שמאפשרים לך להתעלם מהאובייקט הראשון (-Skip
) והאחרון (-SkipLast
) בפלט, בהתאמה.
כדי לראות כיצד דילוג על מספר מסוים של אובייקטים מהפלט עובד:
הרץ את הפקודה הבאה כדי לקבל את כל תהליכי הריצה (Get-Process
), אך -Skip
את המספר הראשון של 100
אובייקטים שמוחזרים.
שים לב שמספר האובייקטים שנדילג נמדד על פי ערכי מספרים שלמים (חיוביים ושלמים ללא נקודות עשרוניות), שבמקרה זה הוא
100
.

עכשיו, הרץ את הפקודה הבאה כדי לקבל רשימה של תוכן התיקייה הפועלת (Get-ChildItem
), אך לדלג על האובייקט האחרון (-SkipLast
) של 100
אובייקטים שמוחזרים.

בחירת האובייקט הראשון או האחרון במספר מסוים
בנוסף לדילוג על האובייקט הראשון והאחרון, ייתכן ותרצה גם לבחור באובייקט הראשון והאחרון במקום. פקודת Select-Object
תומכת ביכולת זו באמצעות הפרמטרים First
ו־Last
, המאפשרים לך לדלג על כל היתר כדי לחסוך זמן ומשאבים.
הרץ את הפקודה הבאה כדי לקבל את כל התהליכים, אך רק לבחור (Select-Object
) ב־-First 10
אובייקטים שיחזרו.

עכשיו, הרץ את הפקודה למטה כדי לקבל את כל תוכן ספריית העבודה (Get-ChildItem
), אך רק לבחור (Select-Object
) ב־-Last 10
אובייקטים שיחזרו.

בחירת אובייקטים ייחודיים באופן בלעדי
כשאתה עובד עם סטים גדולים יותר, תתקל בערכים כפולים שיהיה לך רצון להתעלם מהם בפלט, שזה דבר טבעי. אבל הדבר הטוב עם פקודת Select-Object
הוא שאין צורך להתעסק ידנית בהתעלמות מערכים כפולים.
הוספת הפרמטר -Unique
מאפשרת לך לבחור רק באובייקטים ייחודיים מתוך הפלט, וכך לייעל את הניתוח שלך ולשפר את דיוק התוצאות.
הרץ את הפקודה למטה כדי לבחור (Select-Object
) ולהחזיר את ה־-First 2
אובייקטים.
למטה, תראה שני אובייקטים שיחזרו בלתי תלוי אם הוא ערך כפול או לא.

לבסוף, הרץ את הפקודה למטה כדי להחזיר רק ערך -Unique
אחד עבור כל אחד מה־-First 2
אובייקטים שנבחרו.
הפעם, אתה רואה רק אחת מהערכים הראשונים שנבחרו מהאובייקטים הראשוניים, מאחר שהשני הוא פשוט ערך כפול. כפי שאתה מבין, הפלט הזה מוכיח שהפרמטר -Unique
מועיל לבזבוז מהיר של כל אובייקטים כפולים בנתונים שלך.

מסקנה
PowerShell מציג יתרת מידע. אך במדריך זה, למדת כיצד פקודת ה-Select-Object
של PowerShell עוזרת לך לסנן את הנתונים שלך כך שתראה רק את המידע הדרוש.
ראית כיצד פרמטרים שונים מאפשרים לך לבחור ולהסיר נתונים, במיוחד ערכים כפולים מהפלט. עם פקודת ה-Select-Object
, ניהול כמויות גדולות של נתונים אינו צריך להיות משימה מפחידה.
בנקודה זו, אתה יכול למקם את התוצאות שלך בקלות יותר כדי שתתאים יותר לניתוח ולתיקון תקלות. אבל למה לא ללמוד כיצד ל-פורמט את התכונות שלך כדי לשפר את הנגישות והשימושיות?
Source:
https://adamtheautomator.com/powershell-select-object/