פקודת התחל-שינה של PowerShell: תחביר, דוגמאות
צריך לדחות סקריפט של PowerShell לזמן מה? לאחר מכן, אתה זקוק לפקודת PowerShell Start-Sleep.
מדריך זה מלמד אותך את כל מה שאתה צריך לדעת על שינה של PowerShell. אני מתחיל את המדריך בהסבר התחביר של הפקודה Start-Sleep.
לאחר מכן, בחלק האחרון של המדריך, אני חולק 9 דוגמאות מהחיים האמיתיים כיצד להשתמש בפקודה התחל-שינה.
עיין בנושאי פוסטים
- Powershell Sleep: תחביר של Start-Sleep Cmdlet
- דוגמאות לשינה של Powershell
- כיצד להגדיר שינה של PowerShell במילישניות, שנייה אחת (או פחות), דקות, או למשך שעה אחת
- כיצד להשתמש ב-Powershell Sleep לספירה לאחור (פונקציית Start-Count)
- כיצד להשתמש בשינה ב- Powershell עם זמן אקראי
- כיצד להפעיל את Powershell Sleep עד לזמן מסוים
- כיצד להוסיף PowerShell Sleep לאחר או לפני פקודה
- כיצד להשתמש ב-PowerShell Sleep כדי לנסות שוב סקריפט
- כיצד להכניס סקריפט PowerShell למצב שינה עד שהקובץ קיים
- כיצד לגרום ל-PowerShell לישון לנצח עד שאלחץ על Ctrl + C
- כיצד לישון ב-PowerShell עד לסיום תהליך הריצה
Powershell Sleep: תחביר של Start-Sleep Cmdlet
להלן התחביר של Start-Sleep Cmdlet:
|_+_| |_+_|
ל-cmdlet הזה יש שני פרמטרים
אלפיות שניות - השתמש בו כדי לציין את הזמן (Int32) באלפיות שניות. PowerShell תעכב במשך אלפיות השנייה שתזין.
לדוגמה, אם אני רוצה לעכב את הסקריפט שלי ב-300,000 אלפיות שניות (5 דקות), אפעיל את הפקודה למטה:
|_+_|
שניות : ניתן גם לציין את תקופת ההשהיה בשניות. כדי לעשות זאת, השתמש ב- שניות פרמטר של פקודת התחל-שינה.
כדי להמשיך עם הדוגמה האחרונה, כדי לעכב את הסקריפט שלי ב-5 דקות (300 שניות), אפעיל את הפקודה למטה:
|_+_|דוגמאות לשינה של Powershell
בחלק זה יש כמה דוגמאות לשימוש ב- Powershell Sleep כדי לפתור כמה משימות מורכבות כמו ספירה לאחור ועוד.
כיצד להגדיר שינה של PowerShell במילישניות, שנייה אחת (או פחות), דקות, או למשך שעה אחת
כפי שהסברתי בסעיף האחרון, לפקודת התחל-שינה יש שני תחבירים, כפי שמוצג להלן:
|_+_|כדי להגדיר את PowerShell לעיכוב של 30000 אלפיות שניות (30 שניות), השתמש בכל אחת מהפקודות שלהלן:
|_+_|יתר על כן, אתה יכול להשתמש בפרמטר של Millisecond כדי להגדיר את השינה לפחות משנייה אחת. לדוגמה, אם ברצונך לדחות סקריפט PowerShell למשך 0.0005 שניות (0.5 אלפיות שניות), תוכל להשתמש בכל אחת מהפקודות שלהלן:
|_+_|בדוגמה השלישית שלי בתת-סעיף זה, אני רוצה להגדיר שינה של PowerShell למשך שעה. הגישה הטובה ביותר כאן היא להשתמש בפרמטר Seconds של הפקודה Start-Sleep.
כדי לעשות זאת, אתה צריך להמיר שעה אחת לשניות. אתה יכול לעשות זאת בקלות על ידי חיפוש להמיר שעה אחת ל שניות בגוגל.
התוצאה היא 3600 שניות. לכן, כדי לדחות סקריפט PowerShell בשעה אחת, השתמש בפקודת PowerShell Start-Sleep למטה:
|_+_|כפי שניתן לראות מצילום המסך למטה, שורת הפקודה של PowerShell לא תהיה זמינה עד שהעיכוב (שעה) יסתיים.
באופן דומה, אתה יכול להגדיר את PowerShell למצב שינה למשך 5 דקות באמצעות הפקודה למטה:
|_+_| 5 דקות שוות ל-300 שניותכיצד להשתמש ב-Powershell Sleep לספירה לאחור (פונקציית Start-Count)
כתבתי פונקציית PowerShell (Start-Count), שסופרת לאחור או למעלה. לפונקציה יש 4 פרמטרים:
ספירה לאחור : כאשר אתה מציין פרמטר זה, Start-Count סופרת לאחור ממספר מוגדר
CountUp: לחלופין, ציון ה- לספור עד פרמטר גורם ל-Start-Count לספור כלפי מעלה ממספר מוגדר
לספור מ : לא כמו ה ספירה לאחור ו לספור עד , פרמטר זה דורש קלט. השתמש בזה כדי לציין את המספר שממנו יש לספור לאחור או למעלה.
CountTo : השתמש בפרמטר זה כדי לציין את המספר שאליו יש לספור (למטה או למעלה)
בצע את השלבים הבאים כדי להוריד ולהשתמש בפונקציית Start-Count:
- לחץ על הורד Start-Count.zip
- לאחר מכן, פתח את ה-Start-Count.zip. לאחר פתיחת הדחוס, תראה תיקייה בשם Start-Count. תיקיה זו מכילה את מודול PowerShell
- העתק את תיקיית Start-Count לתיקיית PowerShell Modules שלך. זה ממוקם ב-C:Usersprofile_nameDocumentsWindowsPowerShellModules
- בטל את חסימת קובץ המודול שהורד באמצעות הפקודה למטה:
- לבסוף, פתח את PowerShell והפעל את Start-Count. בדוגמה הראשונה, אני רוצה לספור לאחור מ-10 ל-0.
הפקודה תתחיל לספור לאחור מ-10 עד שתגיע לאפס (0). ראה את צילום המסך למטה...
בפקודה השנייה הזו, אני סופר מ-5 עד 40...
|_+_|
כיצד להשתמש בשינה ב- Powershell עם זמן אקראי
כאשר אתה מפעיל את Start-Sleep, PowerShell סופרת לאחור מהחלק העליון של הזמן שצוין. לדוגמה, אם אני מריץ את Start-Sleep ומציין 20 שניות, PowerShell תספור לאחור בשנייה אחת.
עם זאת, אם אתה רוצה שהספירה לאחור תהיה אקראית (כלומר, ספירה לאחור ב-2, 5, 6), אז אתה צריך לשלב את התחל-שינה וקבל-אקראי.
לדוגמה, אם אני רוצה ש-PowerShell יירדם במרווחים של בין 1 ל-10 שניות, אפעיל את הפקודה למטה:
|_+_|הצב פקודה זו לפני שתפעיל את הפקודות שברצונך לבצע בהשהייה אקראית...
כיצד להפעיל את Powershell Sleep עד לזמן מסוים
בתרחישי סקריפטים מסוימים של PowerShell, ייתכן שתרצה להגדיר שינה עד לזמן מסוים. לדוגמה, ייתכן שתרצה להגדיר שינה למשך 30 שניות.
כדי להשיג זאת, אתה צריך א לַעֲשׂוֹת , עד לוּלָאָה.
בדוגמה זו, אני רוצה ש- PowerShell יירדם עד שהטיימר יגיע ל-30 שניות.
ראשית, קבעתי את שעת ההתחלה ואת שעת הסיום. שעת ההתחלה היא הזמן שממנו אני רוצה לספור.
כדי להקל, אני אספור מ-0.
אנשי קשר לא ב- icloud
קודם כל, אני אקבע מאיפה אני רוצה לספור...
|_+_|לאחר מכן, אקבע לאן אני רוצה לספור עד...
|_+_|עכשיו, אני אשתמש לַעֲשׂוֹת , עד לולאה עם Start-Sleep כפי שמוצג בתסריט למטה:
הפעל כל פקודה אחת בכל פעם |_+_| שמתי את כל הסקריפט של Do, Until בשורה אחת כדי שאוכל להפעיל אותו ב- PowerShell. אם אתה רוצה להריץ את הסקריפט פנימהPowerShell ISE, אתה יכול לכתוב אותו כפי שמוצג להלן: |_+_|עם זאת, כדי להפעיל את הסקריפט ב- PowerShell, הפעל כל אחת מהפקודות שלהלן:
|_+_|הפקודה תספור מ-0 עד 30, עם מרווח של שנייה אחת. ראה את צילום המסך למטה...
כיצד להוסיף PowerShell Sleep לאחר או לפני פקודה
זו דוגמה מאוד פשוטה. אם ברצונך להוסיף עיכוב לאחר פקודת PowerShell, הוסף את פקודת התחל-שינה לאחר פקודת PowerShell.
לדוגמה, כדי להוסיף 5 דקות המתנה לאחר הפעלת Get-Process, השתמש בפקודה למטה:
|_+_|כפי שמוצג בצילום המסך למטה, כאשר הפקודה Get-Process מסתיימת, PowerShell לא חוזרת להנחיה שלה. זה מציין שהעיכוב של 5 דקות (300 שניות) קיים.
בצד הנגדי של הדוגמה לעיל, אתה יכול גם להשתמש בשינה של PowerShell כדי להוסיף השהיה ואז להפעיל פקודה.
הפעם, במקום להוסיף Start-Sleep לאחר הפקודה, נוסיף אותה לפני הפקודה...
|_+_|הפעם, העיכוב ייכנס לפני שהפקודה תרוץ.
כיצד להשתמש ב-PowerShell Sleep כדי לנסות שוב סקריפט
בניסיון למצוא לזה פתרון, מצאתי תסריט קיים שהוגש על ידי א stackoverflow.com תורם (אנסגר וויכרס).
אנסגר יצר את הפונקציה למטה. הוא קרא לזה נסה שוב-פקודה. שיניתי את הפונקציה ל-Redo-Command כדי להשתמש בעבודה שאושרה על ידי PowerShell.
מלבד זאת, אני נותן קרדיט מלא לאנסגר וויכרס. הנה התסריט המלא…
|_+_|ובכן, העליתי גם את התסריט כדי שהקוראים שלנו יוכלו להוריד ולהשתמש בהם. כדי להוריד ולהשתמש בפונקציה, בצע את השלבים הבאים:
- לחץ על הורד Redo-Command.zip . לאחר מכן, פתח את קובץ ה-zip שהורדת.
- העתק את התיקיה שנפתחה, בצע פקודה מחדש ל-c:usersDocumentsWindowsPowerShellModules
- לאחר מכן, פתח את PowerShell והפעל את הפקודה למטה - הפקודה פותחת את הקובץ. זה מפסיק את PowerShell להזהיר אותך כל הזמן שהקובץ הורד מהאינטרנט
- לבסוף, כדי להשתמש בפונקציית PowerShell Sleep כדי לנסות שוב סקריפט, הפעל פקודה כמו זו למטה:
ברירת המחדל של הניסיון החוזר הוא 5 פעמים. עם זאת, אם ברצונך להוסיף ניסיון חוזר מותאם אישית, השתמש בפרמטר המקסימלי כפי שמוצג להלן...
|_+_|בפקודה האחרונה, אתה מקבל ניסיון חוזר 8 פעמים לפני שגיאה מוחזרת.
כיצד להכניס סקריפט PowerShell למצב שינה עד שהקובץ קיים
כדי להעביר סקריפט PowerShell למצב שינה עד שקובץ קיים, עליך להשתמש ב-Test-Path וב-Start-Sleep in a While לולאה.
להלן התחביר הכללי של לולאת PowerShell While שאתה צריך:
|_+_|כדי לתת דוגמה, אבדוק אם קיים קובץ בשם eventlog.txt בכונן D. הסקריפט לא ימשיך עד שהקובץ יהיה זמין.
הנה התסריט…
|_+_|הפקודה Test-Path בודקת אם קיים קובץ. אם הקובץ קיים, Test-Path מחזירה True.
להיפך, אם הקובץ לא קיים, Test-Path מחזיר False. על ידי הוספה ! לפני Test-Path, הפכתי את התוצאה.
לכן, התוצאה בלולאת while היא True אם הקובץ לא קיים.
למעשה, מה שהפקודה אומרת הוא זה: אם Test-Path d:eventlog.txt שווה שֶׁקֶר (הקובץ לא קיים), החזר נָכוֹן עבור לולאת ה-while. יתרה מזאת, ככל התנאי בעוד נָכוֹן , בצע את הפקודה התחל-שינה 10 (עיכובים של 10 שניות).
לאחר מכן, חזור לחלק התנאי של לולאת while ובדוק אם הקובץ קיים. אם לא, השהה עוד 10 שניות. לולאה זו תימשך עד שהקובץ קיים - לאחר מכן, הלולאה תישבר ו- PowerShell יתחדש.
כדי לבדוק את הסקריפט הזה, אפעיל אותו תחילה (ללא הקובץ, d:eventlog.txt)
כפי שניתן לראות בצילום המסך למטה, לולאת ה-while תמשיך מכיוון שהקובץ אינו קיים.
כדי לשבור את הלולאה, אני אצור את הקובץ. ברגע שאיצור את הקובץ, לולאת ה-while תישבר ו-PowerShell תמשיך (ראה את צילום המסך למטה):
כיצד לגרום ל-PowerShell לישון לנצח עד שאלחץ על Ctrl + C
אם אתה מפעיל פקודה שאינך רוצה לשבור עד שתלחץ על Ctrl + C, אתה צריך את לולאת while.
לדוגמה, כדי להפעיל את הפקודה PowerShell - Get-EventLog -LogName Application - לנצח (ברציפות, עד שתלחץ על Ctrl + C), השתמש בפקודה למטה:
|_+_|מה שהפקודה עושה הוא זה: ככל שהפקודה בחלק {} של לולאת ה-while נכונה, המשך לרוץ.
כיצד לישון ב-PowerShell עד לסיום תהליך הריצה
דוגמה זו היא ההיפך הישיר מהדוגמה האחרונה. בדוגמה האחרונה, המשכתי תהליך רץ ברציפות.
עם זאת, בדוגמה זו אני רוצה ש- PowerShell יירדם עד להשלמת התהליך. לאחר סיום התהליך, השינה מסתיימת.
כמו הדוגמה הקודמת, לולאת while תעשה את העבודה. עם זאת, האופן שבו לולאת ה-while מוגדרת שונה.
הפעם, שמתי את הפקודה בבלוק () של לולאת while. עם זאת, אני צריך להוסיף! לפני הפקודה.
הנה הדוגמה שלי…
|_+_|פקודה זו אומרת ל-PowerShell, בעוד (Get-EventLog -LogName Application) נכון, הפוך את PowerShell למצב שינה למשך 5 שניות. לאחר השינה, PowerShell תבדוק אם הפקודה (Get-EventLog -LogName Application) עדיין פועלת.
אם הוא עדיין פועל, התחל לישון עוד 5 שניות. לולאה זו תימשך עד שהפקודה תושלם...
כיצד לתקן מתוך html5 שטח אחסון לא מקוון - -
אני מקווה שמצאת את המדריך הזה קל להבנה וגם מועיל! אם מצאתם את המדריך מועיל, הצביעו כן בעד האם פוסט זה היה מועיל? לְהַלָן.
תוכל גם לתת משוב מפורט באמצעות ה-LEAVE A REPLY בסוף דף זה.
לבסוף, ייתכן שתמצא את מדריכי PowerShell האחרים שלנו מועילים. לקריאת מדריכי PowerShell נוספים, בקר בדף הסבר PowerShell ו-CMD שלנו.
עוד דבר אחד לפני שאתה הולך, אם אתה רוצה ללמוד PowerShell, אולי תרצה לסמן את דף מדריכי PowerShell שלנו.


