Ccmdlet PowerShell Start-Sleep lub alias sleep
jest prostym cmdletem mającym jeden cel; wstrzymanie działania skryptu. Po wykonaniu w konsoli PowerShell, skrypcie wykonywanym przez konsolę lub w PowerShell ISE, cmdlet wstrzymuje działanie skryptu lub modułu w sesji PowerShell do momentu upłynięcia wymaganego czasu w sekundach lub milisekundach.
Ten cmdlet jest prosty, ale może być zastosowany na kilka różnych sposobów, które pozwolą nam skrypterom na tworzenie dobrze napisanych skryptów.
Start-Sleep Usage
Używanie cmdleta Start-Sleep jest niezwykle proste, ponieważ ma on tylko dwa parametry! Powiedzmy, że chcę wstrzymać mój skrypt, ponieważ czekam na uruchomienie jakiegoś innego procesu środowiskowego. Ten proces trwa około 10 sekund, a ja muszę mieć pewność, że mój skrypt nie będzie nadal działał, zanim to zewnętrzne zdarzenie zostanie zakończone.
Aby wstrzymać skrypt na 10 sekund, użyłbym Start-Sleep -Second 10
. Jeśli chcę być bardzo dokładny, mógłbym również określić czas w milisekundach jako Start-Sleep -Milliseconds 10000.
Przykładowy kontekst
Jednym z najczęstszych zastosowań cmdletu Start-Sleep jest użycie go wewnątrz pętli while
. Pętla while
jest konstrukcją w PowerShell, która wykonuje kod podczas gdy dzieje się coś innego. Jednym z najlepszych zastosowań pętli while
jest czekanie, aż coś innego się wydarzy. Zamiast po prostu zgadywać, ile czasu zajmie proces i uruchamiać ten cmdlet bezpośrednio.
Na przykład, być może trzeba poczekać, aż plik pojawi się w folderze. Może ten plik został tam upuszczony przez jakieś inne oprogramowanie. Gdy plik znajdzie się w folderze, musisz uruchomić jakiś kod przeciwko niemu. Ten przykład jest doskonałym przykładem użycia pętli while
i Start-Sleep
.
W poniższym przykładzie mój kod czeka na pojawienie się pliku C:\File.txt
. Gdyby to było w skrypcie, wstrzymałby skrypt do czasu wystąpienia tego zdarzenia. Technicznie rzecz biorąc, nie potrzebujemy Start-Sleep
, aby to zrobić, ale jeśli nie jest używany, ten kod może sparaliżować twój komputer. Szybkość, z jaką mógłby nieustannie sprawdzać ten plik, zależałaby od PowerShell!
Nie musimy sprawdzać tego pliku co .0455ms. Zamiast tego, powinniśmy spowolnić to sprawdzanie i wykonywać test tylko co pięć sekund. Spowolnienie pętli while jest doskonałym zastosowaniem polecenia Start-Sleep
.
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
Aby zobaczyć przykład użycia tego cmdletu z ładnym paskiem postępu, sprawdź to.
.