Comandă PowerShell Start-Sleep: Sintaxă, Exemple
Trebuie să amânați un script PowerShell pentru o perioadă? Apoi, aveți nevoie de comanda PowerShell Start-Sleep.
Acest ghid vă învață tot ce trebuie să știți despre somnul PowerShell. Încep ghidul explicând sintaxa comenzii Start-Sleep.
Apoi, în secțiunea finală a ghidului, vă împărtășesc 9 exemple din viața reală despre cum să utilizați comanda Start-Sleep.
Răsfoiți subiectele postărilor
- Powershell Sleep: Sintaxa cmdlet-ului Start-Sleep
- Exemple Powershell Sleep
- Cum să setați PowerShell Sleep în milisecunde, 1 secundă (sau mai puțin), minute sau timp de 1 oră
- Cum să utilizați Powershell Sleep To Countdown (funcția Start-Count)
- Cum să utilizați Powershell Sleep cu timp aleatoriu
- Cum să rulați Powershell Sleep până la o anumită oră
- Cum să adăugați PowerShell Sleep după sau înainte de o comandă
- Cum să utilizați PowerShell Sleep pentru a reîncerca un script
- Cum să puneți în repaus un script PowerShell până când fișierul există
- Cum să fac ca PowerShell să dorm pentru totdeauna până când apăs Ctrl + C
- Cum să PowerShell Sleep până la finalizarea procesului de rulare
Powershell Sleep: Sintaxa cmdlet-ului Start-Sleep
Iată sintaxa cmdlet-ului Start-Sleep:
resetează permisiunile Windows 10|_+_| |_+_|
Acest cmdlet are doi parametri
Milisecunde – utilizați-l pentru a specifica timpul (Int32) în milisecunde. PowerShell va întârzia pentru milisecundele pe care le introduceți.
De exemplu, dacă vreau să amân scriptul cu 300000 de milisecunde (5 minute), voi rula comanda de mai jos:
|_+_|
secunde : De asemenea, puteți specifica perioada de întârziere în secunde. Pentru a face acest lucru, utilizați secunde parametrul comenzii Start-Sleep.
Pentru a continua cu ultimul exemplu, pentru a-mi întârzia scriptul cu 5 minute (300 de secunde), voi rula comanda de mai jos:
|_+_|Exemple Powershell Sleep
Această secțiune conține câteva exemple despre cum să utilizați Powershell Sleep pentru a rezolva unele sarcini complexe, cum ar fi numărătoarea inversă și multe altele.
Cum să setați PowerShell Sleep în milisecunde, 1 secundă (sau mai puțin), minute sau timp de 1 oră
După cum am explicat în ultima secțiune, comanda Start-Sleep are două sintaxe, așa cum se arată mai jos:
|_+_|Pentru a seta PowerShell să întârzie 30000 de milisecunde (30 de secunde), utilizați oricare dintre comenzile de mai jos:
|_+_|Mai mult, puteți utiliza parametrul Milisecond pentru a seta somnul la mai puțin de 1 secundă. De exemplu, dacă doriți să întârziați un script PowerShell cu 0,0005 secunde (0,5 milisecunde), puteți utiliza oricare dintre comenzile de mai jos:
|_+_|În al treilea exemplu din această subsecțiune, vreau să setez PowerShell sleep timp de 1 oră. Cea mai bună abordare aici este să utilizați parametrul Secunde al comenzii Start-Sleep.
Pentru a face acest lucru, trebuie să convertiți 1 oră în secunde. Puteți face acest lucru cu ușurință căutând converti 1 oră în secunde in google.
Rezultatul este de 3600 de secunde. Deci, pentru a întârzia un script PowerShell cu 1 oră, utilizați comanda PowerShell Start-Sleep de mai jos:
|_+_|După cum puteți vedea din captura de ecran de mai jos, promptul de comandă PowerShell nu va fi disponibil până la încheierea întârzierii (1 oră).
În mod similar, puteți seta PowerShell să inactiveze timp de 5 minute folosind comanda de mai jos:
|_+_| 5 minute este egal cu 300 de secundeCum să utilizați Powershell Sleep To Countdown (funcția Start-Count)
Am scris o funcție PowerShell (Start-Count), care numără invers sau sus. Funcția are 4 parametri:
aplicația Google Hangout pentru Mac
Numărătoarea inversă : Când specificați acest parametru, Start-Count numără invers de la un număr specificat
CountUp: Ca alternativă, specificând Numara parametrul face ca Start-Count să conteze în sus de la un număr specificat
Numara de la : Spre deosebire de Numărătoarea inversă și Numara , acest parametru necesită o intrare. Folosiți-l pentru a specifica numărul de la care să numărați invers sau de la care să faceți numărătoarea inversă.
Număra până la : Folosiți acest parametru pentru a specifica numărul până la care să numărați (în jos sau în sus)
Urmați pașii de mai jos pentru a descărca și utiliza funcția Start-Count:
- Faceți clic pe descărcare Start-Count.zip
- Apoi, dezarhivați Start-Count.zip. Când este dezarhivat, veți vedea un folder numit Start-Count. Acest folder conține modulul PowerShell
- Copiați folderul Start-Count în folderul PowerShell Modules. Acesta se află în C:Usersprofile_nameDocumentsWindowsPowerShellModules
- Deblocați fișierul de modul descărcat cu comanda de mai jos:
- În cele din urmă, deschideți PowerShell și rulați Start-Count. În primul exemplu, vreau să număr invers de la 10 la 0.
Comanda va începe numărătoarea inversă de la 10 până când ajunge la zero (0). Vedeți captura de ecran de mai jos...
În această a doua comandă, număr de la 5 la 40...
|_+_|
Cum să utilizați Powershell Sleep cu timp aleatoriu
Când rulați Start-Sleep, PowerShell numără invers din partea de sus a timpului specificat. De exemplu, dacă rulez Start-Sleep și specific 20 de secunde, PowerShell va număra invers cu 1 secundă.
Cu toate acestea, dacă doriți ca numărătoarea inversă să fie randomizată (adică numărătoarea inversă cu 2, 5, 6), atunci trebuie să combinați Start-Sleep și Get-Random.
De exemplu, dacă vreau ca PowerShell să dorm la intervale între 1 și 10 secunde, voi rula comanda de mai jos:
|_+_|Plasați această comandă înainte de a rula comenzile pe care doriți să le executați cu întârziere aleatorie...
Cum să rulați Powershell Sleep până la o anumită oră
În unele scenarii de scripting PowerShell, este posibil să doriți să setați repaus până la o anumită oră. De exemplu, poate doriți să setați somnul pentru 30 de secunde.
Pentru a realiza acest lucru, aveți nevoie de un Do , Pana cand buclă.
În acest exemplu, vreau ca PowerShell să inactiveze până când temporizatorul atinge 30 de secunde.
În primul rând, am setat ora de început și ora de încheiere. Ora de începere este timpul de la care vreau să număr.
Pentru a fi mai ușor, voi număra de la 0.
doordash scoate cardul de credit
În primul rând, voi stabili de unde vreau să număr...
|_+_|Apoi, voi stabili unde vreau să număr până...
|_+_|Acum, voi folosi Do , Pana cand buclă cu Start-Sleep, așa cum se arată în scriptul de mai jos:
Rulați fiecare comandă pe rând |_+_| Am pus întregul script Do, Until într-o singură linie, astfel încât să îl pot rula în PowerShell. Dacă doriți să rulați scriptul înPowerShell ISE, îl puteți scrie așa cum se arată mai jos: |_+_|Cu toate acestea, pentru a rula scriptul în PowerShell, executați fiecare dintre comenzile de mai jos:
|_+_|Comanda va număra de la 0 la 30, cu un interval de 1 secundă. Vedeți captura de ecran de mai jos...
Cum să adăugați PowerShell Sleep după sau înainte de o comandă
Acesta este un exemplu foarte simplu. Dacă doriți să adăugați o întârziere după o comandă PowerShell, adăugați comanda Start-Sleep după comanda PowerShell.
De exemplu, pentru a adăuga 5 minute de așteptare după rularea Get-Process, utilizați comanda de mai jos:
|_+_|După cum se arată în captura de ecran de mai jos, când comanda Get-Process se finalizează, PowerShell nu revine la promptul său. Aceasta indică faptul că întârzierea de 5 minute (300 de secunde) este în vigoare.
Pe partea opusă a exemplului de mai sus, puteți folosi și PowerShell sleep pentru a adăuga o întârziere, apoi rulați o comandă.
De data aceasta, în loc să adăugăm Start-Sleep după comandă, îl adăugăm înainte de comandă...
|_+_|De data aceasta, întârzierea va interveni înainte ca comanda să ruleze.
Cum să utilizați PowerShell Sleep pentru a reîncerca un script
În încercarea de a găsi o soluție la acest lucru, am găsit un script existent trimis de a stackoverflow.com colaborator (Ansgar Wiechers).
Ansgar a creat funcția de mai jos. L-a numit Retry-Command. Am schimbat funcția în Redo-Command, astfel încât să folosesc un verb aprobat de PowerShell.
În afară de asta, îi acord întregul credit lui Ansgar Wiechers. Iată scenariul complet...
|_+_|Ei bine, am încărcat și scriptul pentru ca cititorii noștri să îl descarce și să îl folosească. Pentru a descărca și utiliza funcția, urmați pașii de mai jos:
imaginea de profil steam nu se va schimba
- Faceți clic pe descărcare Redo-Command.zip . Apoi, dezarhivați fișierul zip descărcat.
- Copiați folderul dezarhivat, Redo-Command în c:usersDocumentsWindowsPowerShellModules
- Apoi, deschideți PowerShell și rulați comanda de mai jos - comanda deblochează fișierul. Acest lucru oprește PowerShell să vă avertizeze în mod constant că fișierul a fost descărcat de pe internet
- În cele din urmă, pentru a utiliza funcția PowerShell Sleep pentru a reîncerca un script, rulați o comandă ca cea de mai jos:
Reîncercarea implicită este de 5 ori. Cu toate acestea, dacă doriți să adăugați o reîncercare personalizată, utilizați parametrul Maxim așa cum se arată mai jos...
|_+_|În ultima comandă, primiți o reîncercare de 8 ori înainte ca o eroare să fie returnată.
Cum să puneți în repaus un script PowerShell până când fișierul există
Pentru a activa un script PowerShell până când există un fișier, trebuie să utilizați Test-Path și Start-Sleep într-o buclă While.
Iată sintaxa generală a buclei PowerShell While de care aveți nevoie:
|_+_|Pentru a da un exemplu, voi verifica dacă un fișier numit eventlog.txt în unitatea D există. Scriptul nu va continua până când fișierul nu este disponibil.
Iată scenariul...
|_+_|Comanda Test-Path verifică dacă există un fișier. Dacă fișierul există, Test-Path returnează True.
Dimpotrivă, dacă fișierul nu există, Test-Path returnează False. Prin adăugarea ! înainte de Test-Path, am inversat rezultatul.
Deci, rezultatul în bucla while este adevărat dacă fișierul nu există.
În esență, ceea ce spune comanda este următorul: dacă Test-Path d:eventlog.txt este egal Fals (Fișierul NU există), returnează Adevărat pentru bucla while. Mai mult, în măsura în care este starea de timp Adevărat , executați comanda Start-Sleep 10 (întârzieri 10 secunde).
Apoi, reveniți la partea de condiție a buclei while și verificați dacă fișierul există. Dacă nu, amânați încă 10 secunde. Această buclă va continua până când fișierul există – apoi, bucla se va întrerupe și PowerShell se va relua.
Pentru a testa acest script, îl voi rula mai întâi (fără fișier, d:eventlog.txt)
După cum se vede în captura de ecran de mai jos, bucla while va continua, deoarece fișierul nu există.
Pentru a rupe bucla, voi crea fișierul. Odată ce creez fișierul, bucla while se va întrerupe și PowerShell va continua (vezi captura de ecran de mai jos):
Cum să fac ca PowerShell să dorm pentru totdeauna până când apăs Ctrl + C
Dacă rulați o comandă pe care nu doriți să o întrerupeți până când apăsați Ctrl + C, aveți nevoie de bucla while.
De exemplu, pentru a rula comanda PowerShell – Aplicația Get-EventLog -LogName – pentru totdeauna (în mod continuu, până când apăsați Ctrl + C), utilizați comanda de mai jos:
|_+_|Ceea ce face comanda este aceasta: în măsura în care comanda din partea {} a buclei while este adevărată, continuați să rulați.
rădăcină galaxy s8 g950u
Cum să PowerShell Sleep până la finalizarea procesului de rulare
Acest exemplu este direct opusul ultimului exemplu. În ultimul exemplu, am păstrat un proces care rulează continuu.
Cu toate acestea, în acest exemplu vreau ca PowerShell să dorm până la finalizarea procesului. Odată ce procesul se termină, somnul se termină.
La fel ca exemplul anterior, o buclă while va face treaba. Cu toate acestea, modul în care este configurată bucla while este diferit.
De data aceasta, am pus comanda în blocul () al buclei while. Totuși, trebuie să adaug! înainte de comandă.
Iata exemplul meu...
|_+_|Această comandă îi spune PowerShell, în timp ce (Get-EventLog -LogName Application) este adevărat, faceți PowerShell să inactiveze timp de 5 secunde. După repaus, PowerShell va verifica dacă comanda (Get-EventLog -LogName Application) mai rulează.
Dacă încă funcționează, începeți să dormiți încă 5 secunde. Această buclă va continua până la finalizarea comenzii...
Sper că ați găsit acest ghid atât ușor de înțeles, cât și util! Dacă ați găsit ghidul util, vă rugăm să votați Da pentru A fost utilă această postare? de mai jos.
Puteți, de asemenea, să oferiți feedback detaliat folosind LESAȚI UN RĂSPUNS de la sfârșitul acestei pagini.
În cele din urmă, s-ar putea să găsiți utile celelalte ghiduri PowerShell. Pentru a citi ghiduri PowerShell mai perspicace, vizitați pagina noastră PowerShell & CMD Explained.
Încă un lucru înainte de a pleca, dacă doriți să învățați PowerShell, poate doriți să marcați pagina noastră de tutoriale PowerShell.


