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.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.