19Aug

חנון בית הספר: למידה עיצוב, סינון והשוואה ב PowerShell

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

הקפד לקרוא את המאמרים הקודמים בסדרה:

  • למד כיצד להפוך את Windows עם PowerShell
  • לומד להשתמש ב- Cmdlets ב- PowerShell
  • למידה כיצד להשתמש באובייקטים ב- PowerShell

ולהישאר מעודכן עבור שאר הסדרות במשך כל השבוע.

עיצוב ברירת המחדל

כשהתחלתי לראשונה עם PowerShell, חשבתי שהכול הוא קסם, אבל האמת היא שזה פשוט לוקח קצת זמן להבין מה קורה מתחת למכסה המנוע.הדבר נכון גם לגבי מערכת עיצוב PowerShell.למעשה, אם אתה מפעיל את ה- cmdlet Get-Service, הפלט שנוצר מציג רק 3 מאפיינים: Status, Name ו- DisplayName.

אבל אם אתה מקבל צינור שירות כדי לקבל חבר, אתה רואה את האובייקטים ServiceController יש הרבה יותר מאשר רק את שלושת המאפיינים, אז מה קורה?

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

C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

אם נשתמש בפונקציית Findep של Notepad, נוכל לדלג במהירות לפרק המפרט את הפלט של ה- cmdlet Get-Service על-ידי חיפוש ה- ServiceControllerסוּג.

לפתע, ניתן לראות שמתחת לכובע המנוע PowerShell מעצבים אובייקטים כלשהם בקו צינור של סוג ServiceController ויוצרים טבלה עם שלוש עמודות: Status, Name ו- DisplayName.אבל מה אם לסוג שאתה מתעסק אין ערך בקובץ זה, או כל קובץ פורמט אחר לצורך העניין?ובכן, זה די פשוט.אם לאובייקט היוצא מהצינור יש 5 מאפיינים או יותר, PowerShell מציג את כל מאפייני האובייקט ברשימה;אם יש לו פחות מ 5 מאפיינים, הוא מציג אותם בטבלה.

עיצוב הנתונים שלך

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

  • פורמט רשימה
  • תבנית טבלה
  • פורמט רחב

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

קבל שירות |Format-Wide

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

קבל שירות |Format-Wide -Paperty DisplayName -Column 6

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

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

|Format-List

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

קבל תהליך |Format-List -Property *

לחלופין, ניתן לבחור רק את התכונות הרצויות.

קבל תהליך |פורמט רשימה - שם הנכס, מזהה

טבלת פורמט, ומצד שני, לוקח נתונים והופך אותו לטבלה.מאחר שהנתונים שלנו מ- Get-Process כבר נמצאים בצורת טבלה, אנו יכולים להשתמש בו כדי לבחור בקלות מאפיינים שאנו רוצים להציג בטבלה.השתמשתי בפרמטר AutoSize כדי להתאים את כל הנתונים למסך יחיד.תהליך קבלת

|שם טבלה, מזהה -AutoSize

סינון והשוואה

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

קבל שירות |איפה - אובייקט{ $ _. מצב -Eq "ריצה"}

איפה האובייקט הוא בעצם מאוד פשוט.$ _ מייצג את אובייקט הצינור הנוכחי, שממנו ניתן לבחור נכס שברצונך לסנן בו.כאן, היו רק שמירה על אובייקטים שבהם המאפיין סטטוס שווה לרוץ.יש מספר מפעילי השוואה שבהם ניתן להשתמש בבלוק התסריט של סינון:

  • eq( שווה ל)
  • nq( לא שווה ל)
  • gt( גדול מ)
  • ge( גדול מ או שווה ל)
  • lt( פחות)
  • le( פחות או שווה ל)
  • כמו( משחק מחרוזת תווים כלליים)

רשימה מלאה ומידע נוסף ניתן לראות את הקובץ about_comparison סיוע קונספטואלי, אולם זה לוקח קצת זמן להתרגל לתחביר ה- Where-Obeject.ללא שם: זהו כל הזמן!