כשאתה עובד עם PowerShell, יש רגעים בהם יש צורך לעבוד עם סטים של נתונים. אנו עובדים עם המון קבצים, חשבונות משתמשים, מכונות וירטואליות ועוד. כאשר אתה מציג את האובייקטים השונים הללו בקונסול, האובייקטים יתגלגלו מטה למטה במסך אחרי הם ולא יתחשבו באופן שאתה רוצה לראות אותם. אך זה ניתן לתקן! באמצעות פקודת PowerShell Group-Object
, אתה יכול לקבץ אובייקטים יחד. פקודה זו פועלת כמו ההצהרה GROUP BY ב- SQL.
PowerShell יש לו דרך לסכם אובייקטים לפי מאפייניהם דרך פקודת Powershell Group Object. פקודה זו מאפשרת לסקריפטר לקבל תמונה כללית של המאפיינים של האובייקטים הרבים בו זמנית בקבוצות.
בוא ניצור המון אובייקטים מסוג אחד. אלה יכולים להיות אובייקטים של כל סוג. אך, לצורך הדגמה זו, אני אשתמש ב- System.ServiceProcess.ServiceController שהפקודה Get-Service
מחזירה.
כדי ש- Group-Object יעבוד כמצופה, וודא שאתה מקבץ רק אובייקטים מאותו סוג. חשוב שכל האובייקטים יש להם את אותם מאפיינים.
ניהול ודיווח על Active Directory, Exchange ו-Microsoft 365 עם ManageEngine ADManager Plus. הורד גרסה דמו בחינם!
Group-Object ללא פרמטרים
Get-Service
מחזיר את כל השירותים על המחשב המקומי שלי. מאחר וישנם הרבה שירותים כאן, אין לי אפשרות לקבל רעיון על מעמדם, סוג ההתחלה ועוד. אני רוצה לקבץ את השירותים האלה תחילה לפי המעמד שלהם. כדי לקבץ את השירותים הללו, אני אשלח את כל עצמות השירות ל־Group-Object
של PowerShell ואשתמש במאפיין Status
.
שים לב שעל ידי שילוב כל השירותים ל־Powershell Group Object
, אתה יכול לקבל את המספר. זה לא משהו גדול אבל שימושי.
קיבוץ אובייקטים לפי מאפיין יחיד
כדי לקבץ אותם לפי מאפיין מסוים (במקרה זה מצב) עלי לספר ל־Group-Object
שאני רוצה לקבץ על פי מאפיין מסוים של אובייקט. זה נעשה על ידי שימוש בפרמטר Property
על Group-Object
.
עכשיו אנחנו מדברים! אני יכול לראות כמה שירותים עצרו ופועלים בו זמנית. אני יכול לעשות אותו הדבר עבור StartType
גם.
סינון פלט של Group-Object
אולי אני רוצה להעמיק ולראות את השירותים האמיתיים באחת או יותר מהקבוצות הללו. אני יכול לקבל את אלה באמצעות הסתכלות על המאפיין Group
שמוחזר על ידי פקודת ה־Powershell לקבוצה. האובייקט Group
מכיל את כל השירותים שנקבצו לפי ערך המאפיין של אובייקט. כדי לקבל את כל השירותים שעצרו אם אני מקבץ על מצב השירות, אני יכול לסנן את השירותים לפי המצב של Stopped
ולאחר מכן להרחיב את האובייקט Group
כדי לראות את כל השירותים האלו.
קיבוץ אובייקטים לפי מאפיינים מרובים
לא רק תוכל לקבץ אובייקטים כאלה על מאפיין יחיד, אלא תוכל גם לקבץ על מספר מאפיינים כמו כן. אולי תרצה לראות את כל השירותים על סמך מצבם וסוג ההתחלה שלהם. כדי לעשות זאת, עליי רק להוסיף שם מאפיין נוסף לפרמטר Property
ב- Group-Object
.
ניתן לראות שעל ידי הוספת מאפיין נוסף, בגדול תוכל ליצור מספר תרחישים "וגם" ולקבץ על כמה מאפיינים שנדרש!
ניהול ודיווח על מנהל הספרייה הפעילה, החלפה ו-Microsoft 365 עם ManageEngine ADManager Plus. הורדת גרסת ניסיון חינם!
סיכום
ה- Group-Object
הוא פקודת cmdlet שעוזרת לך לקבץ אובייקטים דומים יחד על פי מאפיין משותף. קיבוץ אובייקטים כזה מועיל בכמה דרכים שונות. אני מקווה שבלמידה קטנה על איך ה- Group-Object
פועלת, תקבל עוד רעיונות על איך לשפר וליצור סקריפטים טובים יותר בפוורשל!
אם אתה רק מתחיל עם פוורשל, אני ממליץ בחום לבדוק את הקורס הקטן שלי על בניית כלים בפוורשל!
Source:
https://adamtheautomator.com/powershell-group-object/