שלט Start-Sleep של מאסטר: השהיית סקריפטים בצורה יעילה

עזרה PowerShell Start-Sleep או ה-alias sleep הוא cmdlet פשוט עם מטרה אחת; להשהות סקריפט. כאשר מופעל בקונסול ה-PowerShell, סקריפט שמופעל על ידי הקונסול או ב- PowerShell ISE, ה- cmdlet משהה סקריפט או מודול בסשן ה-PowerShell עד שעבר הזמן הדרוש בשניות או במילישניות.

ה- cmdlet הזה פשוט אך ניתן ליישם בכמה דרכים שונות שיאפשרו לנו ליצור סקריפטים מסודרים.

שימוש ב- Start-Sleep

שימוש ב- cmdlet Start-Sleep הוא קל מאוד מאחר ויש לו רק שני פרמטרים! נניח שאני רוצה להשהות את הסקריפט שלי כי אני מחכה לתהליך סביבתי אחר שירוץ. התהליך הזה לוקח כ-10 שניות, ואני צריך לוודא שהסקריפט שלי לא ימשיך לרוץ לפני שהאירוע החיצוני הזה יסתיים.

כדי להשהות את הסקריפט למשך 10 שניות, אפשר פשוט להשתמש ב- Start-Sleep -Second 10. אם אני רוצה להיות מדויק, אפשר גם לציין את הזמן במילישניות כמו כן Start-Sleep -Milliseconds 10000.

דוגמה להקשר

אחד השימושים הנפוצים ביותר של cmdlet Start-Sleep הוא בתוך לולאת while. לולאת while היא בניין ב-PowerShell שמפעיל קוד כל עוד משהו אחר קורה. אחד השימושים הטובים ביותר של לולאת while הוא לחכות שמשהו אחר יקרה. במקום לנחש כמה זמן תקח תהליך ולהפעיל את ה- cmdlet ישירות.

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

בדוגמה למטה, הקוד שלי מחכה לקובץ C:\File.txt להופיע. אם הייתה זו תסריט, הוא היה משהה את התסריט עד שהאירוע הזה התרחש. מבחינה טכנית, לא נצטרך ב-Start-Sleep כדי לעשות זאת, אך בלעדיו, הקוד יכול להפגיע במחשב שלך. המהירות שבה הוא יכול לבדוק את הקובץ הזה יכולה להיות עד PowerShell!

אנו לא צריכים לבדוק את הקובץ הזה כל .0455 מילישניות. במקום זאת, עלינו להאט את הבדיקה ולבצע את המבחן רק כל חמישייה שנייה. להאט שלולוניות של while הוא שימוש מצוין בפקודת Start-Sleep.

$filePath = 'C:\File.txt'
while (-not (Test-Path -Path $filePath)) {
    ## המתן לתקופה מסוימת
    Start-Sleep -Seconds 5
}

לדוגמה של שימוש ב-cmdlet זה עם סרגל התקדמות נחמד, תבדוק את זה.

Source:
https://adamtheautomator.com/start-sleep/