כאשר אתה משתמש בתסריטים של PowerShell כדי לנהל מערכות או לעבד משימות גורפות, ללא ספק תיתקל בצורך להשתמש בבניית לולאה כחלק מהתסריטים שלך. קיימים הרבה סוגים של לולאות זמינות בפוורשל, ואחת מהן היא הלולאה for. לולאת ה־PowerShell for יכולה להפעיל את אותו סט של פקודות על פריטים מרובים במהירות וליצור תוצאות עקביות.
במאמר זה, תלמד מהו השימוש של לולאת for ב־PowerShell, תבין את התחביר שלה ומה מרכיב את הצהרת הלולאה for. תלמד גם מהדוגמאות על ידי דרכים שונות להשתמש ב־for loop.
הבנת הצהרת הלולאה for ב־PowerShell ומציינים מקום
לולאת PowerShell נהוגה בעיקר כאשר מספר הפעמים (ספירת חזרות) שפקודה או תהליך צריכים לרוץ כבר ידוע. דוגמה היא כאשר ברצונך לעבד רק חלק מהערכים במערך (למשל, לעבד רק 10 מתוך X מספר הפריטים).
שימוש בלולאה for מעניק שליטה יותר על המגבלות והתנאים שבהם הקוד צריך לסיים. זה נשווה ללולאת foreach או לפקודת ForEach-Object
, שבה הסיבוב מפסיק לאחר שעבר הפריט האחרון באוסף.
להלן התחביר של ההצהרה על לולאת for לעזרתך.
כפי שניתן לראות בתחביר לעיל, הצהרת הלולאה for ב־PowerShell יכולה להתפצל לארבעה מצייני מקום שעליך לדעת. אלו הם מצייני ה־התחלה, התנאי, חזור ו־רשימת ההצהרות.
- ההתחלתי מציין את הערך ההתחלתי שלך. הערך הזה נקרא רק פעם אחת על ידי ההצהרה. בדרך כלל, כותבי סקריפט ישייכו למשתנה זה ערך של אפס.
- התנאי מציין את הגבול או התנאי לקביעת כך האם הלולאה צריכה להמשיך לרוץ או לסיים. הביטוי שמשמש בתוך תיקנה זו מערכת ל־True.
- החזרה מקבלת פקודות מרובות. הפקודות שמסופקות בתיקנה זו מתבצעות לאחר כל חזרה של הלולאה ולפני שהתנאי מתבחן מחדש. כותבי סקריפט כמובן ישתמשו בזה כדי לספק ביטוי להגדרת או פיקוד הגדלה או הפחתה לערך בתוך התחלתי.
- לבסוף, בתיקנה רשימת ההצהרות היא המקום בו מתבצע הקוד הראשי שתתכוון להפעיל. הקוד בתוך תיקנה זו מושקע בלולאה עד שהתנאי מחזיר ערך של
$False
.
הבנת זרימת ההרצה של לולאת PowerShell For
כדי להבין יותר טוב את פעולתה של לולאת PowerShell For, עליך להכיר את זרימת ההרצה שלה. לולאת for היא בדרך כלל תהליך בארבעה שלבים, שאחרי הרצה ראשונית הופך לתהליך בשלושה שלבים. כדי להמשיך ולהבין יותר, המשך לקרוא את האלגוריתם למטה.
שלב 1
בתחילת ההצהרה על לולאת for, הערך התחלתי נקרא ונשמר בזכרון.
דוגמה: $num = 0
שלב 2
ההצהרה של לולאת ה־for מעריכה את תוצאת הביטוי בתוך התיבה ה־Condition. אם התוצאה היא $false
, הלולאה של for מופסקת. אם התוצאה היא $true
, אז לולאת ה־for ממשיכה לשלב הבא.
דוגמה: $num -lt 10
שלב 3
PowerShell מריץ את הקוד בתוך התיבה Statement list. יכול להיות שם פקודה אחת או יותר, בלוקי סקריפט או פונקציות.
דוגמה: "אני מספר $num "
שלב 4
בשלב זה, הביטוי בתיבת ה־Repeat מורץ, שיעדכן את הערך הנוכחי של התיבה Initial. לאחר מכן, הזרימה תחזור לשלב 2.
דוגמה: $num++
שימוש בלולאת For ב־PowerShell (דוגמאות)
הסעיפים הבאים יהיו דוגמאות לכיצד להשתמש בלולאת for בצורות שונות. הדוגמאות אלו עשויות או לא להיות בעלות שימוש פרקטי או בחיי היום-יום כפי שהן. אך הטכניקות שתלמד יכולות להדריך אותך בשימוש בלולאת for כאשר תתמודד עם צורך אמיתי לעשות זאת.
עכשיו שיש לך את הרעיון כיצד פועלת לולאת for, הגיע הזמן לראות כיצד הכל מתמזג ביחד באמצעות קוד בסיסי.
קבלת רצף של מספרים
הקוד למטה מציג את המחרוזת "אני מספר $num"
באופן חוזר בקונסולה החל מ־1 עד שערך $num
מגיע ל־10.
כאשר אתה מעתיק את הקוד למעלה ומדביק אותו לפקודה שלך ב־PowerShell כדי להריץ אותו, התמונה הבאה מציגה את התוצאה.

חיבור מחרוזות
הפקודה של לולאת for אינה מוגבלת רק לביטויים מתמטיים כמו חיבור, חיסור או כפל. היא יכולה גם לשמש לחיבור של ערכי מחרוזות.
הדוגמה למטה תמשיך לחזור על האות "x" עם כל שורה מכילה תו נוסף מאשר הקודמת עד שמספר התווים בשורה מגיע ל-30.
כפי שניתן לראות, ערך המשתנה $x
הוגדר עם ''
שמכיל אפס תווים. המגבלה על פי התנאי היא עד שמספר התווים בערך של $x
מגיע ל-30. לאחר כל איטרציה, תו "x" נוסף נצמד לערך של $x
.
הפלט למטה מציג את התוצאה הצפויה כאשר הקוד למעלה מורץ בפוורשל.

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

הצגת התקדמות
אולי השימוש הנפוץ ביותר בלולאת for הוא להצגת אינדיקטורים להתקדמות. זה בעיקר משמש כאשר מריצים משימות עבור פריטים רבים שעשויים לקחת זמן להשלם. כמו, יצירת דוח עבור כל גדלי התיבות בארגון ה-Exchange שלך, או עדכון תכונות של משתמשים מרובים ב-Active Directory.
הקוד לדוגמה למטה מראה לך את הדרך הבסיסית להצגת ההתקדמות מ-1 עד 100%. כפי שתראה, הערך ההתחלתי של ה-$counter
הוא 1, והתנאי מציין שלולאה זו תרוץ עד שערך ה-$counter
יגיע ל-100.
כאשר אתה מריץ את הקוד לעיל ב-PowerShell, עליך לראות פלט דומה, כפי שמוצג למטה.

הצגת טיימר ספירה לאחור
הקוד הבא מראה איך להשתמש בלולאת for להצגת טיימר ספירה לאחור. טיימר הספירה לאחור מציג רק את השניות הנותרות, החל מ-10.
אם ברצונך לשנות את מספר ההתחלה, אתה רק צריך לשנות את ערך המשתנה $seconds
במקום ה-Initial.
הרצת הקוד לעיל ב-PowerShell תוביל לפלט לדוגמה למטה.

הצגת טיימר ספירה לאחור (לולאת For מקוננת)
מה קורה אם תרצה להציג את מונה השעון לאחור בפורמט דקות:שניות
? יש אפשרות להשתמש בלולאת for מקוננת כדי לבצע זאת. לולאת for מקוננת היא פשוטה מוגדרת כלולאה for בתוך לולאה for אחרת וכך הלאה.
הקוד לדוגמה למטה מכיל שתי הצהרות לולאה for.
הלולאה הראשונה טופלת את הספירה לאחור של חלק הדקה של השעון. כפי שאתה רואה, ישנה משתנה $דקות
לפני הלולאה for שבו יש לציין את מספר הדקות ממנו יתבצע הספירה לאחור.
הלולאה השנייה טופלת את הספירה לאחור של חלק השנייה של השעון. לאחר כל תור, הלולאה עושה הפסקה של 1 שנייה לפני שהיא ממשיכה. זה ימשיך כך עד שערך ה$שניות
יגיע ל-0.
כאשר הקוד למעלה מופעל, כך ייראה מונה השעון לאחור.

קביעת מספר ראשוני
לולאת for ב-PowerShell היא גם ברירת בחירה טובה לפעולות מתמטיות. בדוגמה זו, לולאת for משמשת לקביעה אם מספר נתון הוא מספר ראשוני.
A prime number is a number that is only divisible by 1 and N, where N is the number itself. For example, if the value of N is 7, then N divided by 1
is 7 divided by 1
.
הסקריפט למטה, כאשר מופעל, יבצע את הפעולות הבאות:
- עם למשתמש להזין מספר.
- ביצוע חלוקה באמצעות המספר הנתון כמנוי, והמחלקים הם המספרים מ-2 עד למספר הנתון פחות 1. זה אומר שאם הערך הנתון הוא 7, המחלקים הם 2, 3, 4, 5 ו-6, בהתאמה.
- אם המנתוק היא מספר שלם, זה אומר שהמספר הקלט אינו מספר ראשוני ואז הלולאה תיפסק.
- אם המנתוק אינו מספר שלם, זה אומר שהמספר הקלט הוא מספר ראשוני.
העתק ושמור את הסקריפט כ-isPrime.ps1
לאחר ששמרת את הסקריפט isPrime.ps1
, הרץ אותו בפוורשל כדי לבדוק. כדי להדגיש, ראה את תוצאת הפלט הדוגמא שלמטה.

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