18Aug

בית הספר חנון: ללמוד כיצד להשתמש אובייקטים ב PowerShell

הבנת אובייקטים היא אחד המושגים הבסיסיים "מקבל" PowerShell.הצטרף אלינו כפי שאנו לחקור אובייקטים וכיצד הם עושים PowerShell טוב יותר מאשר כל פגז אחר שם בחוץ היום.

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

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

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

Objects

האם תהית אי פעם מה קובע את PowerShell מלבד פגז לינוקס מסורתי כמו Bash, או אפילו פקודת הפקודה מדור קודם?התשובה היא פשוטה מאוד: פגזים מסורתיים טקסט פלט, אשר עושה את זה קשה לעשות דברים כמו עיצוב וסינון.כמובן, ישנם כלים שיעזרו לך לעשות את העבודה( sed ו grep לבוא בראש), אבל בסוף היום, אם אתה רוצה לעשות כל סוג של ניתוח טקסט כבד, אתה צריך לדעת ביטויים רגולריים כמוגב היד.

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

ב. NET הם דומים מאוד למעט שני הבדלים קטנים: "חלקים" נקראים תכונות ואת "הוראות" נקראים

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

ניתן לראות מאפיינים ומאפיינים של אובייקט על-ידי העברתו ל- cmdlet Get-Member.האובייקטים שבהם יציאות cmdelet מסוג PowerShell הן בעיקר סוגי בסיסי ממסגרת NET. אך ניתן ליצור עצמים משלך אם עליך להשתמש בשפה כמו C # או להשתמש בסוג PSObject.

צינור

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

קבל שירות |Get-Member

מסיבות שאינן חורגות מסעיף זה, מאפיינים ושיטות נקראים במשותף לחברי המחלקה, מה שמסביר מדוע אתה משתמש ב- cmdlet Get-member כדי לקבל רשימה של כל השיטות והמאפיינים של אובייקט.עם זאת, קמדלט Get-Member גם מחזיר עוד פיסת מידע חשובה, סוג האובייקט הבסיסי.במסך שלמעלה, אנו יכולים לראות ש- Get-Service מחזיר אובייקטים מהסוג:

System. ServiceProcess. ServiceController

מכיוון ש- PowerShell עוסק באובייקטים ולא בטקסט, לא כל הקמדלטים יכולים להיות מקושרים יחד באמצעות הצינור [1].זה אומר שאנחנו צריכים למצוא cmdlet זה מחפש לקבל אובייקט System. ServiceProcess. ServiceController מהצינור.

Get-Command -PamameterType SystemServiceProcess. ServiceController

שים לב שיש קמדלט בשם Stop-Service;בואו נסתכל על העזרה עבור זה.

Get-Help-Stop-Service

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

Get-Help -Name עצור שירות -

מלא חשדות שלנו היו נכונים.אז בשלב זה אנו יודעים את הדברים הבאים:

  • Get-Service מחזירה אובייקטים ServiceController
  • Stop-Service יש פרמטר שנקרא InputObject שמקבל אחד או יותר ServiceControllers כקלט.
  • הפרמטר InputObject מקבל קלט צינור.

באמצעות מידע זה נוכל לבצע את הפעולות הבאות:

Get-Service -Name 'Apple Mobile Device' |עצור שירות

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

שיעורי הבית

  • לקרוא על צינור אובייקט

אם יש לך שאלות אתה יכול ציוץ לי @ taybgibb, או פשוט להשאיר תגובה.