Komplement PowerShell Start-Sleep nebo alias sleep
je jednoduchý komplement s jediným účelem: pozastavit skript. Po spuštění v konzole prostředí PowerShell, skriptu spouštěném konzolou nebo v ISE prostředí PowerShell rutina pozastaví pouhý skript nebo modul v relaci prostředí PowerShell, dokud neuplyne požadovaný čas v sekundách nebo milisekundách.
Tento rutina je jednoduchá, přesto ji lze použít několika různými způsoby, které nám, skriptérům, umožní umazat dobře napsané skripty.
Použití rutiny Start-Sleep
Použití rutiny Start-Sleep je velmi snadné, protože má koneckonců pouze dva parametry! Řekněme, že chci pozastavit svůj skript, protože čekám na spuštění nějakého jiného procesu v prostředí. Tento proces trvá přibližně 10 sekund a já potřebuji mít jistotu, že můj skript nebude pokračovat v běhu dříve, než tato externí událost skončí.
Chci-li pozastavit skript na 10 sekund, stačí použít Start-Sleep -Second 10
. Pokud bych chtěl být analytický, mohl bych také zadat čas v milisekundách jako Start-Sleep -Milliseconds 10000.
Kontext příkladu
Jedním z nejčastějších použití této rutiny Start-Sleep je uvnitř smyčky while
. Smyčka while
je konstrukce v prostředí PowerShell, která provádí kód, zatímco se děje něco jiného. Jedním z nejlepších použití smyčky while
je čekání na to, až se stane něco jiného. Místo toho, abyste jen odhadli, jak dlouho bude proces trvat, a spustili tuto rutinu přímo.
Například možná potřebujete počkat, až se ve složce objeví nějaký soubor. Možná je tam tento soubor vhozen nějakým jiným softwarem. Jakmile je soubor ve složce, potřebujete proti němu spustit nějaký kód. Tento příklad je vynikajícím příkladem použití smyčky while
a Start-Sleep
.
V níže uvedeném příkladu můj kód čeká, až se objeví soubor C:\File.txt
. Kdyby to bylo ve skriptu, pozastavilo by to skript, dokud by tato událost nenastala. Technicky k tomu Start-Sleep
nepotřebujeme, ale pokud by se nepoužíval, mohl by tento kód ochromit váš počítač. Rychlost, s jakou by mohl neustále kontrolovat tento soubor, by záležela na prostředí PowerShell!
Nepotřebujeme kontrolovat tento soubor každých 0,0455ms. Místo toho bychom měli tuto kontrolu zpomalit a provádět ji pouze každých pět sekund. Zpomalení smyčky while je vynikajícím využitím příkazu Start-Sleep
.
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
Pro příklad použití této rutiny s pěkným ukazatelem průběhu se podívejte na toto.
.