חנון בית הספר הלמידה עיצוב, סינון והשוואה ב PowerShell
במהדורה זו של בית הספר חנון, אנחנו מסתכלים על עיצוב, סינון והשווה אובייקטים צינור.
הקפד לקרוא את המאמרים הקודמים בסדרה:
- למד כיצד להפוך את Windows עם PowerShell
- ללמוד להשתמש Cmdlets ב PowerShell
- ללמוד כיצד להשתמש אובייקטים ב PowerShell
ו להישאר מכוון עבור שאר הסדרה כל השבוע.
עיצוב ברירת מחדל
כאשר התחלתי לראשונה עם PowerShell, חשבתי שהכול היה קסם, אבל האמת היא פשוט לוקח קצת זמן להבין מה קורה מתחת למכסה המנוע. הדבר נכון גם לגבי מערכת עיצוב PowerShell. למעשה, אם אתה מפעיל את ה- cmdlet Get-Service, הפלט שנוצר מציג רק 3 מאפיינים: Status, Name ו- DisplayName.
אבל אם אתה מקבל צינור שירות כדי לקבל חבר, אתה רואה את האובייקטים ServiceController יש הרבה יותר מאשר רק את שלושת המאפיינים, אז מה קורה?
התשובה נמצאת בתוך קובץ מוסתר שמגדיר כיצד רוב הקמלטים המובנים מציגים את הפלט שלהם. כדי לקבל הבנה, הקלד את הבאים לתוך הקליפה ופגע להיכנס.
Notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
אם נשתמש בפונקציה Find Notepad, נוכל לדלג במהירות לקטע המפרט את הפלט של ה- cmdlet Get-Service על-ידי חיפוש סוג ה- ServiceController.
פתאום, אתה יכול לראות כי מתחת למכסה המנוע PowerShell הוא עיצוב כל האובייקטים של צינור כי הם סוג של ServiceController ויצירת טבלה עם שלוש עמודות: מצב, שם, ו DisplayName. אבל מה אם לסוג שאתה מתעסק אין ערך בקובץ זה, או כל קובץ פורמט אחר לצורך העניין? ובכן, זה די פשוט. אם לאובייקט המופיע בצנרת יש 5 מאפיינים או יותר, PowerShell מציג את כל מאפייני האובייקט ברשימה; אם יש לו פחות מ 5 מאפיינים, הוא מציג אותם בטבלה.
עיצוב הנתונים שלך
אם אתה לא מרוצה עיצוב ברירת המחדל של אובייקט או סוג, אתה יכול לגלגל עיצוב משלך. ישנם שלושה cmdlets אתה צריך לדעת לעשות את זה.
- פורמט רשימה
- פורמט-טבלה
- פורמט רחב
פורמט רחב פשוט לוקח אוסף של אובייקטים ומציג תכונה אחת של כל אובייקט. כברירת מחדל, הוא יחפש שם שם; אם האובייקטים שלך אינם מכילים מאפיין שם, הוא ישתמש במאפיין הראשון של האובייקט לאחר המאפיינים היו ממוינים לפי סדר אלפביתי.
קבל שירות | פורמט רחב
כפי שאתה יכול לראות, הוא גם ברירת המחדל לשני עמודות, אם כי אתה יכול לציין גם איזה נכס אתה רוצה להשתמש, כמו גם כמה עמודות אתה רוצה להיות מוצג.
קבל שירות | Format-Wide -Paperty DisplayName - עמודה 6
אם משהו מעוצב כטבלה כברירת מחדל, תמיד ניתן להחליף אותו לתצוגת רשימה באמצעות ה- cmdlet Format-List. בואו נסתכל על הפלט של ה- cmdlet Get-Process.
תצוגה טבלאית זו אכן מתאימה לסוג זה של מידע טוב מאוד, אך הבה נניח שאנו רוצים להציג אותו בטופס רשימה. כל מה שאנחנו באמת צריכים לעשות זה מקטרת פורמט רשימה.
קבל תהליך | פורמט רשימה
כפי שאתה יכול לראות רק ארבעה פריטים מוצגים ברשימה כברירת מחדל. כדי להציג את כל המאפיינים של האובייקט, ניתן להשתמש בתו כללי.
קבל תהליך | פורמט רשימה-נכס *
לחלופין, אתה יכול לבחור רק את התכונות הרצויות.
קבל תהליך | Format-List - שם פרטי, id
פורמט-טבלה, מצד שני, לוקח נתונים והופך אותו לשולחן. מאחר שהנתונים שלנו מ- Get-Process כבר נמצאים בצורת טבלה, אנו יכולים להשתמש בו כדי לבחור בקלות מאפיינים שאנו רוצים להציג בטבלה. השתמשתי בפרמטר AutoSize כדי להתאים את כל הנתונים למסך יחיד.
קבל תהליך | שם טבלה, מזהה -אוטוסי
סינון והשוואה
אחד הדברים הטובים ביותר באמצעות צינור מבוסס אובייקט הוא שאתה יכול לסנן אובייקטים מתוך צינור בכל שלב באמצעות cmdlet אובייקט איפה.
קבל שירות | איפה-אובייקט $ _. סטטוס -Eq "ריצה"
באמצעות האובייקט שבו הוא בעצם מאוד פשוט. $ _ מייצג את אובייקט הצינור הנוכחי, שממנו ניתן לבחור נכס שברצונך לסנן בו. כאן, היו רק שמירה על אובייקטים שבהם המאפיין 'סטטוס' שווה לריצה. יש כמה מפעילי השוואה שבהם ניתן להשתמש בחסימת סקריפט הסינון:
- eq (שווה ל)
- neq (לא שווה ל)
- gt (גדול מ)
- (גדול מ או שווה ל)
- lt (פחות מ)
- le (פחות או שווה ל)
- כמו (מחרוזת תווים כלליים)
רשימה מלאה ומידע נוסף ניתן לראות בקובץ about_comparison עזרה קונספטואלית, אולם זה לוקח קצת זמן להתרגל לתחביר שבו- Obeject. זה הכול בינתיים!