**שימוש ב-Select-Object ב-PowerShell**
ה-Select-Object בפוורשל הוא פקודה המאפשרת לך לבחור אובייקטים ומאפיינים מתוך קבוצת אובייקטים נתונה. אך לפעמים יש צורך לדעת עוד. ה-ExpandProperty הוא מתג עבור Select-Object שמרחיב פרטים על מאפיין מסויים.
גלה את העוזר שב-Expand Property של PowerShell (-ExpandProperty
) במדריך זה המבוסס על דוגמאות.
**דרישות מוקדמות
**
מדובר בהדגמה פעולה. אם ברצונך למעשה לעקוב, כל שצריך הוא מחשב עם PowerShell 5.1 ומעלה. המאמר משתמש במחשב עם Windows 10 ופוורשל 5.1.
חליצת ערכי אובייקט מאפיין באמצעות PowerShell Expand Property
התחבר למחשב שלך ב-Windows והפעל את תרמינל ה-PowerShell. במקטע זה, תתמקד בפקודה Select-Object
ובמפתח ה-ExpandProperty
.
1. הפעל את פקודת Get-Service כדי לקבל רשימה של כל השירותים במערכת שלך. עבור את הפלט לפקודת Select-Object כדי לבחור ולהציג רק את מאפיין השם של כל אובייקט שירות, כפי שמוצג למטה.
עכשיו תראה עמוד בודד של אובייקטים המייצגים רשימה של שמות שירותים במערכת שלך, כפי שמוצג בתמונה המקוצרת למטה.

2. הפעל את הפקודה Get-Member בסיום קו הפקודה הקודם של צינור כדי לאמת את סוג האובייקטים ש-Select-Object מחזירה כפי שמוצג למטה. הידע על סוג האובייקט יכול לסייע בכתיבת פונקציות או פקודות כדי להרחיב על הצינורות שלך.
הפנה לתמונה למטה, ותשים לב שאף שהמפתח -Property מפיק את מה שנראה כרשימה של מחרוזות, אלו הם הרשימה שנבחרה של אובייקטים System.ServiceProcess.ServiceController.

3. החלף את הפקודה Get-Members ב-pipeline כך שתשתמש ב-mkdir כדי ליצור באופן אוטומטי תיקייה לכל שירות. המפתח -first 5 מגביל את מספר האובייקטים שיחזרו. בתור כך, פונקציית mkdir תיצור רק חמישה תיקיות בהתאם לאובייקטים בצינור.
אתה אמור לראות פלט דומה לתמונה למטה, המציינת ניסיון הצלחה.

4. הסר את התיקיות על ידי החלפת mkdir ב-rmdir כפי שמוצג בקטע למטה. הדלק את המפתח -Verbose כדי להציג פלט מפורט בטרמינל שלך.
ה- cmdlet של rmdir מצפה למחרוזות ואינו יכול להתמודד עם הייצוג של עצמות ServiceController כמו ב־hashtable. הניסיון שלך צפוי לנכשל עם מספר שגיאות, כמו שמוצג בתמונה למטה.

5. שנה את המתג -Property למתג -ExpandProperty כפי שמוצג בקטע הבא. על ידי כך, תוכל לקבל את הערך של מאפיין כמחרוזת כשכל מה שאתה צריך הוא מחרוזת.
בשילוב עם rmdir, אתה אמור לראות את הניסיון שלך להסיר את התיקיות באופן אוטומטי להצליח ללא שגיאות, כפי שמוצג בתמונה למטה.

יצירת סט של עצמים נבחרים עם מאפיינים מסוימים
כדי לקצר את קטעי הקוד במקטעים, צור משתנה עבור השירותים הראשונים במכונה שלך כך:
הרץ את הפקודה Get-Service
, בחר בעצמים הראשונים 20
באמצעות ה-cmdlet Select-Object
, ואחסן את העצמים במשתנה בשם $testServices
. בחר רק במאפיינים Name
, Status
, ו־DependentServices
כך:
מתג ה-Expand Property של PowerShell יכול להרחיב רק מאפיין אחד בכל פעם, להבחין ממתג ה-Property שיכול לבחור יותר ממאפיין אחד בו זמנית.
הרץ את שם המשתנה, `$testServices`, כדי להציג את מבנה התוכן שלו.
תראה טבלה המציגה את המאפיינים של השירותים שבחרת, דומה לתמונת המסך למטה.

הרחבת מאפיין אוסף עם PowerShell Expand Property
A PowerShell object can have properties that are collections of objects, also known as collection properties. In this section, you will learn how to use PowerShell Expand Property to expand a collection property to view its members’ properties.
הרץ את ה־cmdlet Select-Object
על המשתנה $testServices
והרחב את המאפיין DependentServices
של כל שירות.
מאחר ש־DependentServices
הוא מאפיין של אוסף, הפלט הוא רשימה של השירותים בכל האוספים המומלאים, כפי שמוצג למטה. שים לב לכפילויות ברשימה עקב שילוב תוצאות מהמאפיין המורחב DependentServices
.

שילוב מאפיין עם PowerShell Expand Property לפלט מסויים
עכשיו יש לך רשימת שירותים תלויים, אך כיצד תדע לאיזה שירות הם תלויים? בסעיף זה, תלמד להשתמש במפסק ה־-Property
כדי לקטגורז מאפיין המורחב.
הרץ את הפקודה למיפוי המאפיינים של DependentServices
לפי Name
.
מאחר והשירותים התלויים כבר כוללים את המאפיין Name
, שלב הקטגוריזציה נכשל, כפי שמוצג למטה.
השגיאה למעלה מסבירה לך שהרשימה הראשית של השירותים (ב־$testServices) כבר מכילה מאפיין Name המתנגש עם מאפיין Name במאפיין המורחב DependentServices.

אפשרות פתרון אחת היא ליצור תכונות מחושבות כדי לשנות את שם המזהה כדלקמן.
שמור את פלט הפקודה הקודם ששונה כדי לציין תכונה מחושבת בשם Depends On כתכונת המזהה במשתנה בשם $depServ. Depends On יכיל את ערך השם עבור כל שירות ב-$testService.
שם התכונה, Depends on
, נבחר באופן שרירותי במדריך זה ויכול להיות כל ביטוי לבחירתך.
העבר את האובייקט ב-$depServ
דרך Select-Object
כדי לבחור את תכונות השירות התלויות Name
, Status
, ו-Depends On
.
כעת אתה יכול לדעת אילו שירותים תלויים בשירותים ב-$testServices
, כפי שמוצג למטה.

שילוב Format-List עם PowerShell Expand Property לשם פרטנות
PowerShell עשוי להגביל אילו תכונות אובייקט להציג, במיוחד בפלט טבלאי, ופלט המתג -ExpandProperty
עשוי לחוות את אותו הדבר. תוכל להציג את התכונות המורחבות ברשימה במקום כפתרון.
הפעל את הפקודה Get-Process
למטה כדי לאחזר את כל ה-modules
שהתהליך explorer
משתמש בהם. הפעל את המתג -ExpandProperty
כדי להציג את תכונות המודולים.
הפלט על המסך שלך אמור להיראות כמו הצילום הבא, שנקטע אוטומטית כדי להציג רק שלוש תכונות.

העבירו את האובייקטים ל- cmdlet של Format-List
כדי להציג את כל הערכים עבור אובייקטי המודול ברשימה נוחה יותר.
כפי שמוצג למטה, הפלט מפרט את כל התכונות וערכיהן. ניתן לשמור את הנתונים לקובץ או להעביר אותם ל-cmdlet נוסף לעיבוד נוסף.

מסקנה
על ידי הצלחה להגיע עד כאן, ראיתם איך להרוויח מהמתג הרחב תכונה (-ExpandProperty) של ה-cmdlet של Select-Object. PowerShell מציעה מגוון של cmdlets שימושיים למשימות נפוצות רבות. תוכלו להעשיר את הידע החדש שלכם על ידי למידה איך להציג קבצים במהירות עם PowerShell Cat.
Source:
https://adamtheautomator.com/powershell-expand-property/