PracticU

Powershell object

בלי כתוביותעם כתוביות
PracticU › קורס PowerShell › Powershell object
מילון מושגים:
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
בייט - יחידת מידע המורכבת משמונה ביטים, ומסוגלת לייצג תו בודד או מספר בין 0 ל-255.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

Powershell object
ההרצאה עוסקת באובייקטים ב-PowerShell: מה מחזירה פקודה, אילו מאפיינים ומתודות יש לאובייקט, ואיך מסננים, בוחרים ומסדרים אותו בצינור.
השלבים העיקריים
1. הפלט של פקודה הוא אובייקט: Get-Service מחזיר רשימה של אובייקטים, ולא רק את שלוש העמודות שמוצגות כברירת מחדל. Format-List * מציג את כל השדות של כל אובייקט.
2. מאפיינים ומתודות: מאפיין הוא תכונה, כמו שם הסרוויס או הסטטוס שלו. מתודה היא פעולה, כמו Stop, ומופעלת עם סוגריים. כך אפשר לבצע פעולה על אובייקט שהגיע מפקודה, גם אם אין לה פקודה ייעודית.
3. Get-Member: הפקודה מראה את סוג האובייקט ואת כל רכיביו: מאפיינים (Property), מתודות (Method) ואירועים (Event). בלי זה קשה לדעת מה אפשר לעשות עם אובייקט.
4. הסוג קובע מה אפשר לעשות: לאובייקט של תאריך יש מתודות כמו AddDays, שמחשבות תאריך עתידי או עבר. מספר שלם לעומת זאת אין לו הצגה כטקסט, ולכן הוא לא מודפס ישירות.
5. מאפיינים סטטיים: יש ערכים שנמצאים ברמת המחלקה ולא באובייקט מסוים, כמו [Math]::PI. מחלקה יכולה לייצר הרבה אובייקטים, אבל את הערכים הסטטיים פונים אליה ישירות.
6. סינון, בחירה ומיון: Where-Object מסנן לפי תנאי, Select-Object בוחר שדות או מספר שורות, ו-Sort-Object ממיין לפי שדה. בדוגמה סוננו קבצים גדולים מ-100 מגה-בייט, ורשימתם נכתבה לקובץ.
7. ForEach-Object: הלולאה עוברת על כל אובייקט בצינור. הבלוק begin רץ פעם אחת לפני המעבר, והבלוק process רץ על כל אובייקט.
פקודות והגדרות
- Get-Service | Where-Object {$_.Status -eq 'Running'} לסינון סרוויסים שרצים.
- Get-Date מחזיר אובייקט תאריך, ואפשר להפעיל עליו .AddDays(17) או .AddDays(-17).
- Out-File -FilePath <קובץ> -Append כותב לקובץ בלי לדרוס אותו.
- Select-Object -First 5 לבחירת החמישה הראשונים מתוך הפלט.
טעויות נפוצות
- בחיבור של ערכים מסוגים שונים, הערך הראשון קובע את הסוג של התוצאה. חיבור של מספר עם טקסט גורם לשגיאה בהרצאה, והפתרון שמוצג הוא להמיר את הערך לטקסט.
- בלי -Append כל הרצה דורסת את הקובץ הקודם.
- אובייקט שאין לו הצגה כטקסט לא ייכתב ישירות לקובץ, ולכן כדאי לעבור עליו בלולאה ולכתוב את הערכים שמעניינים.
שימו לב
מאפיינים ומתודות הם מה שמאפשר לעבוד עם תוצאות של כל פקודה בלי לחכות לפקודה ייעודית. למי שרוצה להעמיק בנושא מומלץ קורס Object Oriented.
השיעור הבא בקורס: יצירת משתמשים ב-Powershell

פרקי ההרצאה: Powershell object

  1. 00:00

    מבוא לאובייקטים ולמבנה הפנימי שלהם

  2. 00:41

    חשיפת כל המאפיינים עם Format-List

  3. 01:17

    גילוי הפעולות של האובייקט עם Get-Member

  4. 03:36

    מאפיינים לקריאה בלבד או לקריאה וכתיבה

  5. 05:08

    הפעלת מתודה על האובייקט במקום פקודה

  6. 09:17

    אובייקטים שאין להם ייצוג טקסטואלי

  7. 10:48

    עבודה עם תאריכים כאובייקטים

  8. 13:44

    שימוש במחלקות .NET ישירות

תמלול ההרצאה: Powershell object

הטקסט המלא של הדקות הראשונות בהרצאה «Powershell object» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:34

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

  3. 01:02

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

  4. 01:28

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

  5. 01:54

    הזה את הסוג הזה ויש פקודות שכתוב שם לדוגמה שאני רוצה סרוויס קונטרולר אובייקט מסוג סרוויס קונטרולר הלאה מה אנחנו עוד רואים פה אנחנו רואים פה אליאס בפרופרטיז מה זה אומר זה אומר שכשאני כותב name get GetService-Name, פרופרטי בשם name, למעשה זה כמו לרשום ServiceName.

  6. 02:17

    אתם רואים, name ו-ServiceName זה אותו דבר. פשוט ServiceName לא נוח לי לכתוב, אז עשו לי name. אז כשאני כותב GetService-Name זה כמו לרשום מינוס ServiceName.

  7. 02:30

    מה אנחנו רואים פה? יש פה עוד אליאס על הפרופרטי. פרופרטי זה המאפיינים הטקסטואליים שאנחנו רואים. נכון כשאנחנו עושים נקודה, GetService- אנחנו מקבלים את הפרופרטי, פרופרטיז האלו תסתכלו get service ככה power של עובד מאחורי הקלע היא מינוס שימו לב מה הוא נותן לנו פה מינוס computer name שימו לב מה זה computer name computer name

  8. 02:56

    computer name איפה הפרופרטי שלנו של computer name dependency services בואו נראה שנייה זה לא מסודר לי לפי הסדר פשוט כן ה computer name כנראה מגיע שזה לא הפרופרטי שלו יפה מה אנחנו יכולים לראות שעל כל פרופרטי, האם אנחנו יכולים לעשות לו גט?

  9. 03:36

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

  10. 03:51

    מה יש לנו עוד? יש לנו פה עוד מתודות. מתודות על אובייקט, יש לנו פה מתודות על אובייקט. שימו לב, אנחנו מדברים על טייפ הזה, על אובייקט מסוג Service Control.

  11. 04:04

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

  12. 04:25

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

  13. 04:51

    to string כל פעם שאתם עושים הדפסה על המסך מופעלת פונקציה to string של האובייקט אוקיי אז האובייקט הזה service control הוא תוצאה של get service וה-toString הדפיס אותו.

  14. 05:06

    מה זה מעניין אותי? אני יכול פתאום לעשות דברים שאין בפעולת getService. לדוגמה, ב-getService אין פעולה של, בואו נראה, פעולות זה מתודות.

  15. 05:18

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

  16. 05:32

    שכחו ב-powerShell לרשום stopService, אנחנו יכולים לעשות get service bits מה יחזיר לנו את האובייקט כמו שראינו אותו את האובייקט מסוג service controller הוא מחזיר לנו אובייקט מסוג service controller ברגע שאני שם סוגריים אני מתחיל לבצע את הפעולה הזאת עשיתי את הפעולה get service bits קיבלתי

  17. 05:57

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

  18. 06:20

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

  19. 06:42

    נקודה, עם סוגריים מתודה זה כמו פונקציה, קוראים לה עם סוגריים והנה זה המתודות שיש, ושימו לב מה הן מקבלות אתם רואים, יש כל מיני מתודות שצריכות לקבל ערכים לדוגמה, command וכאלו מה אנחנו רואים פה? ש-stop לא מקבלת כלום אז אני יכול לעשות get service bits לקבל בחזרה את האובייקט של הסרוויס ולהפעיל אצלו מתודה.

  20. 07:15

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

  21. 07:38

    וזה טוב למקרה שהמתכנתים שכחו לעשות לי משהו שקיים בדוטנט הקלאסי. זאת אומרת, האובייקטים האלו מגיעים לי מתוך המערכת ההפעלה, מתוך הדוטנט. וה-CMD-Less, כמו Get Service, Stop Service, זה מיני תוכנות שבעצם עושות אותו דבר.

  22. 08:00

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

  23. 08:16

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

  24. 08:46

    פה רק הגדרות שלו אוקיי מה שיש לו to string זה בעצם זה מה שמודפס על המסך ברגע שאתם רואים אם משהו מודפס על המסך זה מה שמבצעת פונקציית toString.

  25. 08:58

    למה זה חשוב לכם? כי אפשר לעשות גם דברים קצת יותר ככה מסובכים. לדוגמה אחד, אני לוקח טקסט בואו נעשה מספר 123 נניח 1024 סתם לוקח איזשהו מספר מעביר אותו בפייפ ואני רואה שבגטממבר שלו הוא SystemInt 32 ואין לו toString.

  26. 09:27

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

  27. 09:47

    אוקיי, אני מקבל אירור. למה אני מקבל אירור? כי אי אפשר להדפיס אותו על המסך. אבל הוא עדיין קיים בפייפ, אני יכול לעשות for each ו-for each object, או for each או for each object זה אותו דבר, ולעבור על כל האובייקטים בפייפ, עם זה אני עובר על האובייקט הנוכחי, ולחלק אותו בשתיים.

  28. 10:11

    אני יודע מה, לא יודע מה, ולחלק אותו בשתיים, סתם דוגמא, והנה חילקתי אותו בשתיים ואין שום בעיה, אוקיי?

  29. 10:23

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

  30. 10:41

    למה זה חשוב לנו כל זה? כי אנחנו יכולים עכשיו להתחכם ואנחנו יכולים לחקור ואנחנו יכולים להבין איך עובד הסינטקס בואו נראה עוד כמה דברים לדוגמה לדוגמה איך אנחנו יכולים לעשות לבחור שדות מסוימים בואו נראה איך אנחנו יכולים לעשות שדות מסוימים לדוגמה יש לנו פונקציה שנקראת get date get date והיא מחזירה לי שעכשיו 11 למאי 2016 יפה

  31. 11:11

    מאוד מה אני יכול לעשות אני יכול לקחת אותה בסוגריים ובואו נפנה get member לחקור אותה מה אני יכול לעשות עם תאריכים ואני רואה פה הרבה מאוד מתודות הרבה מאוד פעולות System Daytime אני רואה הרבה מאוד פעולות איזה פעולות אני רואה אני רואה פה להוסיף ימים להוסיף שעות להוסיף דקות הוא יכול לחשב לי כמה זה יהיה עוד 17 יום מה התאריך יהיה בעוד 17

  32. 11:44

    יום יש לי פה כל מיני מאפיינים שאני יכול לשלוף מהם את הנתונים יפה מאוד שימו לב יש פה פונקציה To String אז לא תהיה לנו בעיה להדפיס את האובייקט ישירות יפה מאוד אז אנחנו יכולים לעשות Get Date ולעשות לו לקחת אותו כאובייקט נקודה ולראות לדוגמא לדוגמא לראות לעשות איזושהי פעולה לדוגמא add days כמה זה יהיה מה יהיה התאריך בעוד 17 יום אנחנו מקווים שזה הולך להיות

  33. 12:27

    28 במאי אנחנו יכולים לעשות מינוס 17 יום ולראות שלפני 17 ימים היה 24 באפריל אוקיי אנחנו יכולים ככה בקלות להוסיף להוריד זמנים הלאה אנחנו אנחנו יכולים גם לקחת גט דייט הזה וכאובייקט הוא נכנס למשתנה נניח now משתנה now אני מקבל את המשתנה now עכשיו 11 למאי ואני יכול לעשות

  34. 13:02

    בגלל שזה אובייקט יושב בפנים אובייקט ולא רק טקסט וזה העוצמה בעצם אחרי זה אנחנו זה העוצמה בעצם גם שהפייפ מעביר לאובייקטים נשחק עם זה בהרצאה של פייפ add dates אני יכול ישר להוסיף לאובייקט 17 יום אוקיי ואני אני יכול להוריד יום אחד יפה מאוד אני יכול להוסיף דקות שעות וכולי הלאה מה יש לנו עוד יש מחלקות בדוטנט שכבר כתובות אבל נניח שלא

  35. 13:42

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

  36. 14:17

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

  37. 14:52

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

לקורס המלא: קורס PowerShell אונליין

ההרצאה הקודמת: Powershell pipeline

ההרצאה הבאה: יצירת משתמשים ב-Powershell

הרצאות קשורות מקורסים אחרים

  • Object Serialization
  • Session object - חלק 1
  • המחלקה Object
  • Meterpreter & Powershell

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס Git ו-GitHub עם Visual Studio