PracticU

פקודת Foreach

בלי כתוביותעם כתוביות
PracticU › קורס PowerShell › פקודת Foreach
מילון מושגים:
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
שורת פקודה - ממשק טקסטואלי שבו מקלידים פקודות למערכת ההפעלה ומקבלים תגובה בטקסט, במקום להשתמש בעכבר.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.

פקודת Foreach
PowerShell מאפשר לעשות בפקודה אחת מה שבשורת פקודה רגילה דורש הרבה עבודה ידנית. בשיעור משתמשים ב-ForEach כדי להעתיק את מבנה התיקיות של שרת ישן לשרת חדש, בלי הקבצים שבתוכן.
המשימה
היה צורך להעביר את מבנה התיקיות (כולל תתי-התיקיות) משרת ישן לחדש, בלי התוכן. הקבצים נשארו בשרת הישן.
שלב 1: הפקת רשימה
בשורת הפקודה בשרת הישן מריצים dir /b /s /ad, כאשר /b מציג רק את השם, /s כולל תתי-תיקיות, ו-/ad מציג רק תיקיות. הפלט נשמר לקובץ טקסט בעזרת >, למשל mydir.txt.
שלב 2: העברה ותיקון נתיבים
הקובץ מועבר לשרת החדש. בדמו הכונן במחשב השני היה C ולא D, ולכן החליפו בקובץ את D: ב-C: בעורך טקסט לפני השימוש.
שלב 3: יצירת התיקיות
בתוך PowerShell הכתובת type היא כינוי ל-Get-Content, ו-md הוא כינוי ל-mkdir. PowerShell מגדיר כינויים לפקודות DOS ישנות, כדי שהמעבר יהיה פשוט יותר.
השורה שמבצעת את העבודה היא:
Get-Content mydir.txt | ForEach-Object { md $_ }
הפקודה קוראת שורה אחרי שורה מהקובץ, ולכל שורה מפעילה md. $_ מייצג את השורה הנוכחית. בדמו זה נעשה בשורה אחת, במקום יצירת כל תיקייה ידנית.
שימו לב
המרצה הדגיש שהמפתח הוא להבין את הלוגיקה של PowerShell: צינור (pipe) מעביר את הפלט של פקודה אחת לפקודה הבאה, ו-ForEach עובר על כל פריט בצינור.
בקצרה: הפקודה dir /b /s /ad מפיקה את רשימת התיקיות, ForEach-Object מבצע פעולה על כל שורה בצינור, וכינויים מסייעים למי שבא מ-DOS.
השיעור הבא בקורס: אובייקט בתוך אובייקט ב-PowerShell

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

  1. 00:00

    העתקת מבנה תיקיות בלי תוכן

  2. 00:34

    PowerShell לפתרון המשימה

  3. 01:32

    פרמטרי DIR: תיקיות ותתי תיקיות

  4. 02:48

    הפניית הרשימה לקובץ טקסט

  5. 04:00

    העברת הקובץ למחשב אחר והחלפת נתיב

  6. 05:56

    TYPE ו-Get-Content ב-PowerShell

  7. 06:31

    אליאסים: פקודות DOS ב-PowerShell

  8. 07:29

    DIR כ-Get-ChildItem

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

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

  1. 00:00

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

  2. 00:14

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

  3. 00:30

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

  4. 00:53

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

  5. 01:12

    ובתוך תיקיה יש שתי תיקיות. אז אני פותח CMD, ואני פותח CMD, ואנחנו רואים פה בעצם, זה D.2, CD Laptops, רקורד, ועושים דיר, יפה.

  6. 01:32

    עכשיו אני רוצה את הדיר הזה, אני רוצה את הדיר הזה, שימו לב מה אני רוצה לעשות. אני רוצה לעשות דיר סלאש בי, מה עושה דיר סלאש בי?

  7. 01:41

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

  8. 02:09

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

  9. 02:41

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

  10. 02:52

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

  11. 03:10

    ככה היו מדפיסים בימים של דוס. בימים של דוס היו עושים חצי ימינה, כותבים lpt1 והיו מדפיסים לאיזה lpt1 או משהו כזה. אבל אנחנו כבר לא מדפיסים ל-LPT1, שזה החיבור הגדול הזה, אז אנחנו עושים בעצם לתוך קובץ שנקרא mydir.txt אז בעצם אני פולט הכל

  12. 03:40

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

  13. 04:07

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

  14. 04:36

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

  15. 04:50

    עכשיו, אין לי D, אז אני אעשה לו פה עריכה, החלפה, ואומר לו כל פעם שיש D.2, תחליף את זה ב-C.2. החלף הכל, הופה, החליף את כל ה-D.2 ב-C.2.

  16. 05:05

    פשוט מאוד, בקובץ טקסט, כי אין לי כונן D, יש לי רק ארט דיסק אחד, אז החלפתי c ב-d כדי שהכל יעבוד לי, מצוין, לוקח את הקובץ הזה, אינסטול, תעשה לי קופי פייסט, הנה, נכנסנו לאינסטול ואני עושה לו פייסט, וזה הגיע לפה ל-c אינסטול אצלי בלפטופ, וזאת התחלה כבר טובה, איפה הקובץ הזה,

  17. 05:39

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

  18. 05:52

    טוב, בואו ניכנס פה ל-cd אינסטול, דיר, איך קראנו לו? מיי משהו, נכון? מיי נקודה טי אקסטי משהו? הנה, מיי דיר נקודה טי אקסטי.

  19. 06:02

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

  20. 06:14

    פאורשל מבנה פקודה קבוע, כן? זאת אומרת, טייפ יעבוד קודם כל, אבל זה לא נכון, כן? אתם רואים טייפ עבד, הראה לי את התוכן, פעולה מכף אובייקט זה הלוגיקה של כל הפאורשייל מבנה פקודות קבוע אז get content אני כותב ואז אני כותב לו את mydir.txt עושה אותה פעולה שימו לב מה הסוד

  21. 06:42

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

  22. 07:04

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

  23. 07:18

    cd, להיכנס לתיקייה, שימו לב, זה אליאס ל-setLocation, כי PowerShell חייב מבנה קבוע של פקודה, זו הלוגיקה שלו. cls, clear screen, clear מכב host, כן?

  24. 07:35

    זה הלוגיקה. מה יש לנו? דיר, דיר, דיר זה get children item. זאת אומרת שהדור החדש, הילדים של הילדים שלנו,

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

ההרצאה הקודמת: WMI

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

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

  • לולאת foreach
  • לולאת Foreach ב-SSIS - חלק 1
  • פקודת Select
  • פקודת ls בלינוקס

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

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