Commdlet-ul PowerShell Start-Sleep sau aliasul sleep
este un cmdlet simplu cu un singur scop; de a pune pe pauză un script. Atunci când este executat, în consola PowerShell, într-un script executat de consolă sau în PowerShell ISE, cmdlet-ul pune în pauză pur și simplu un script sau un modul din sesiunea PowerShell de la rulare până când se scurge timpul necesar în secunde sau milisecunde.
Acest cmdlet este simplu, dar poate fi aplicat în câteva moduri diferite care ne vor permite nouă, scriptorilor, să ne lăudăm cu scripturi bine scrise.
Start-Sleep Usage
Utilizarea cmdletului Start-Sleep este extrem de ușoară, deoarece, până la urmă, are doar doi parametri! Să presupunem că vreau să pun în pauză scriptul meu pentru că aștept să se execute un alt proces de mediu. Acel proces durează aproximativ 10 secunde și trebuie să mă asigur că scriptul meu nu continuă să ruleze înainte ca acel eveniment extern să se termine.
Pentru a pune scriptul pe pauză timp de 10 secunde, aș folosi doar Start-Sleep -Second 10
. Dacă vreau să fiu mai analist, aș putea, de asemenea, să specific timpul în milisecunde ca Start-Sleep -Milliseconds 10000.
Exemplu de context
Una dintre cele mai comune utilizări ale acestui cmdlet Start-Sleep este în interiorul unei bucle while
. O buclă while
este o construcție din PowerShell care execută cod în timp ce se întâmplă altceva. Una dintre cele mai bune utilizări ale unei bucle while
este aceea de a aștepta să se întâmple altceva. Mai degrabă decât să ghiciți cât timp va dura un proces și să executați direct acest cmdlet.
De exemplu, poate că trebuie să așteptați ca un fișier să apară într-un dosar. Poate că acel fișier este aruncat acolo de un alt software. Odată ce fișierul se află în dosar, trebuie să executați un cod împotriva lui. Acest exemplu este un exemplu excelent de utilizare a unei bucle while
și a Start-Sleep
.
În exemplul de mai jos, codul meu așteaptă ca fișierul C:\File.txt
să apară. Dacă acest lucru ar fi într-un script, ar pune în pauză scriptul până la apariția acestui eveniment. Din punct de vedere tehnic, nu avem nevoie de Start-Sleep
pentru a face acest lucru, dar, dacă nu este folosit, acest cod ar putea paraliza calculatorul dumneavoastră. Viteza cu care ar putea verifica în mod continuu acest fișier ar depinde de PowerShell!
Nu avem nevoie să verificăm acest fișier la fiecare 0,0455ms. În schimb, ar trebui să încetinim această verificare și să efectuăm testul doar la fiecare cinci secunde. Încetinirea unei bucle while este o utilizare excelentă a comenzii Start-Sleep
.
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
Pentru un exemplu de utilizare a acestui cmdlet cu o bară de progres frumoasă, consultați acest lucru.
.