PracticU

אובייקט בתוך אובייקט ב-PowerShell

בלי כתוביותעם כתוביות
PracticU › קורס PowerShell › אובייקט בתוך אובייקט ב-PowerShell
מילון מושגים:
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.

אובייקט בתוך אובייקט ב-PowerShell
כשפקודה מחזירה רק חלק מהמידע, הפרטים החשובים לעיתים נמצאים בתוך אובייקט פנימי. השיעור מראה איך לחפור לתוך אובייקט של תהליך, להוציא ממנו נתונים מוסתרים ולזהות איזה משתמש הפעיל תוכנה מסוימת.
השלבים העיקריים
1. איתור התהליך: Get-Process מציג את כל התהליכים, ו--Name calc מסנן רק את המחשבון. לכל תהליך יש מספר זיהוי (Id) משלו, ולכן אפשר לפתוח כמה מחשבונים ולהבחין ביניהם.
2. הצגת כל השדות: הטבלה הרגילה מציגה רק חלק מהעמודות. Format-List * מציג את כל השדות בשורות, כולל מקום ההרצה, אבל בלי שם המשתמש.
3. כניסה לתוך האובייקט: השדה StartInfo הוא אובייקט שנמצא בתוך אובייקט התהליך. שמים את הפלט בסוגריים כדי לטפל בו כחתיכה אחת, ואז ניגשים ל-StartInfo.
4. משתני הסביבה: בתוך StartInfo נמצא האוסף EnvironmentVariables, ובו המשתנה USERNAME שמציין מי הפעיל את התהליך.
5. סינון השורה: Where-Object עובר על כל השורות ומציג רק את השורה שבה העמודה Name שווה ל-USERNAME.
6. שמירה במשתנה: $mycalcs = Get-Process calc מעתיק את נתוני התהליכים למשתנה, וממשיכים לעבוד איתם גם אחרי שסוגרים את המחשבונים.
איך זה עובד
כל תהליך הוא אובייקט, ובתוכו יש אובייקטים נוספים, בדומה לקוביות לגו שמרכיבות מגדל. PowerShell הוא מעטפת לקלאסים של C#, ולכן פקודה פשוטה נשענת על מבנה פנימי של מחלקות.
משתני סביבה הם ערכים שמערכת ההפעלה מחזיקה עבור כל תהליך. המשתנה PATH מכיל את התיקיות שבהן המערכת מחפשת קבצי הרצה, ולכן calc נפתח גם כשאינו בתיקייה הנוכחית.
שימו לב
הנתונים שנשמרו במשתנה נשארים זמינים לעבודה גם אחרי שהתהליכים נסגרו, כי המשתנה שומר את המצב ברגע ההרצה. בעזרת הטכניקה הזאת אפשר לאתר מידע שאינו מופיע בפלט הרגיל ולבנות ממנו סקריפט.
השיעור הבא בקורס: כלי לניהול דיסקים ומחיצות בוונדוס 10 - Powershell

פרקי ההרצאה: אובייקט בתוך אובייקט ב-PowerShell

  1. 00:00

    מבוא: מי הפעיל את התהליך

  2. 00:39

    הצגת תהליכים עם Get-Process

  3. 01:52

    חיפוש המשתמש שהפעיל את המחשבון

  4. 03:42

    חפירה לתוך אובייקט StartInfo

  5. 05:59

    משתני סביבה ומה הם מכילים

  6. 08:09

    משתנה PATH ואיתור קבצי הפעלה

  7. 11:25

    שליפת משתנה הסביבה של התהליך

תמלול ההרצאה: אובייקט בתוך אובייקט ב-PowerShell

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

  1. 00:04

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

  2. 00:25

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

  3. 00:46

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

  4. 01:11

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

  5. 01:27

    id זה מספר תהליך. אתם רואים מספר תהליך 3496. כל תהליך, כל process שאתם פותחים מקבל מספר סידורי במערכת. אם אני אפתח עוד calc, יהיה לו מספר סידורי אחר.

  6. 01:39

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

  7. 02:05

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

  8. 02:17

    בטאסק מנאג'ר אם אנחנו נלך לקאלק, אתם רואים running journey, ג'וני מעריץ אותו. אז זאת אומרת שהמידע הזה איכשהו קיים.

  9. 02:27

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

  10. 02:38

    אז איך אנחנו עושים? אין לי פה עמודה, כנראה שהעמודה הזאת היא לא גלויה, היא לא דיפולט, אתם רואים יש פה איזה 5-6 עמודות דיפולט, אני רואה פה 8 עמודות דיפולט, אבל יש הרבה יותר, אני עושה פורמט ליסט, כן, FL, פורמט ליסט כוכבי, תראה לי בשורה את כל העמודות ולא בטבלה, לא בעמודות אלא בשורות,

  11. 03:04

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

  12. 03:25

    אתם רואים? חסר לי מי היוזר שהריץ אותו. יפה מאוד. אז מה אנחנו עושים? אז תראו את זה. אני מתחיל לחשוד שבסטארט אינפו יש את היוזר הזה.

  13. 03:42

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

  14. 04:00

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

  15. 04:17

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

  16. 04:34

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

  17. 05:17

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

  18. 05:28

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

  19. 05:41

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

  20. 06:13

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

  21. 06:35

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

  22. 07:02

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

  23. 07:12

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

  24. 07:29

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

  25. 07:49

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

  26. 08:18

    path זה איפה לחפש את התוכנות. נניח כתבתי קאלק, איך היא ידעה ללכת ל-C Windows System 32 ולהפעיל שם קאלק נקודה XE, איך כשאני כותב פה קאלק היא יודעת ללכת, או קאלק נקודה XE, איך היא יודעת באיזה תקייה זה נמצא.

  27. 08:37

    זה נקרא משתנה סביבה. יש פה ב-path רשומים תיקיות שבהן מחפשים by default אם תוכנה לא נמצאת בתיקיה הנוכחית. לדוגמה, אתם רואים, אני ב-Cusers Journey, אתם רואים ש-calc.exe לא נמצא פה.

  28. 08:54

    אז אין פה בתיקיה הזאת Calc.exe, אבל אם אני ארשום Calc.exe הוא כן יפעיל את עוד מחשבות. איך הוא ידע? הוא הלך לחפש את קובץ ה-exe הזה בכל התיקיות שרשומות תחת path של משתנה סביבה.

  29. 09:11

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

  30. 09:37

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

  31. 10:02

    ואז ברגע שאני אפעיל cmd חדש אם הפעלתי cmd חדש ב-path צריך להופיע aaa שלי ושם הוא גם יחפש את הקובץ, הנה אתם רואים ואני אשים עכשיו איזשהו קובץ בתוך ה-A, ואז הוא יחפש אותו מכל מקום שתרשמו את השם של הקובץ.

  32. 10:25

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

  33. 10:34

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

  34. 10:48

    לדוגמה, אני יכול לעשות set var11 שווה 343, ואז אני יכול לעשות echo 1, var11. וככה אפשר היה לעשות כל מיני סקריפטים בימים של DOS. עכשיו, אני סתם סיפרתי לכם את זה, כי אני צריך שתדעו שיש פה יוזרניים, שאנחנו חוזרים לימים של פאורשל, ב-power shell אנחנו מנצלים את המשתנה סביבה של פעם כדי להוציא את ה-user.

  35. 11:24

    אז אתם רואים ככה, אנחנו חוזרים, לקחנו את האובייקט הספציפי, חילצנו ממנו את הקלאס שנקרא start info, נכנסנו לתוך ה-start info שלו, ועכשיו אנחנו נכנסים פה ל-environment variable, שימו לב, זה לא ערך אחד, יש פה סוגריים עם הרבה ערכים, אתם יכולים לעשות get member כדי לראות מהו הטיפוס של הנתונים,

  36. 11:48

    סוג של הנתונים ואתם יכולים לראות פה שהטיפוס של environment variable זה property מסוג כזה וכזה כן אני מי שלומד c-sharp יודע מה זה collection ומה זה dictionary ולא עכשיו מה שמעניין אתכם זה שאנחנו יכולים לעשות נקודה environment variable ולקבל את כל משתנה הסביבה אתם רואים אנחנו חופרים בתוך אחד בתוך

  37. 12:18

    שני בתוך שלישי יפה מאוד וקיבלנו את המשתנה הסביבה של הקאלק שימו לב של הקאלק שלנו

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

ההרצאה הקודמת: פקודת Foreach

ההרצאה הבאה: כלי לניהול דיסקים ומחיצות בוונדוס 10 - Powershell

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

  • אובייקט Screen
  • Meterpreter & Powershell
  • אובייקט Canvas באנדרואיד
  • שפת JavaScript - אובייקט

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

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