PowerShell Start-Sleep cmdlet tai alias sleep
on yksinkertainen cmdlet, jolla on vain yksi tarkoitus; pysäyttää skripti. Kun cmdlet suoritetaan PowerShell-konsolissa, konsolissa suoritettavassa komentosarjassa tai PowerShell ISE:ssä, se keskeyttää pelkän komentosarjan tai moduulin suorittamisen PowerShell-istunnossa, kunnes haluttu aika sekunteina tai millisekunteina on kulunut.
Tämä cmdlet on yksinkertainen, mutta sitä voidaan soveltaa muutamalla eri tavalla, joiden avulla me skriptaajat voimme ahnehtia hyvin kirjoitettuja skriptejä.
Start-Sleepin käyttö
Start-Sleep-cmdletin käyttäminen on äärimmäisen helppoa, sillä onhan sillä vain kaksi parametria! Oletetaan, että haluan pysäyttää skriptini, koska odotan jonkin muun ympäristöprosessin suorittamista. Tuo prosessi kestää noin 10 sekuntia, ja minun on varmistettava, että komentosarjani ei jatka suoritusta ennen kuin tuo ulkoinen tapahtuma on suoritettu.
Taukottaakseni komentosarjan 10 sekunnin ajaksi käytän vain Start-Sleep -Second 10
. Jos haluan olla anaalinen, voisin myös määrittää ajan millisekunteina Start-Sleep -Milliseconds 10000.
Esimerkkikonteksti
Yksi tämän Start-Sleep-cmdletin yleisimmistä käyttökohteista on while
-silmukan sisällä. while
-silmukka on PowerShellin konstruktio, joka suorittaa koodia, kun jotain muuta tapahtuu. Yksi while
-silmukan parhaista käyttötavoista on odottaa, että jotain muuta tapahtuu. Sen sijaan, että vain arvaisit, kuinka kauan jokin prosessi kestää, ja suorittaisit tämän cmdletin suoraan.
Esimerkiksi sinun on ehkä odotettava, että tiedosto ilmestyy kansioon. Ehkä tuo tiedosto on pudotettu sinne jostain muusta ohjelmistosta. Kun tiedosto on kansiossa, sinun on ajettava jotain koodia sitä vastaan. Tämä esimerkki on erinomainen esimerkki while
-silmukan ja Start-Sleep
:n käytöstä.
Alhaalla olevassa esimerkissä koodini odottaa, että C:\File.txt
-tiedosto ilmestyy. Jos tämä olisi skriptissä, se pysäyttäisi skriptin, kunnes tämä tapahtuma tapahtuu. Teknisesti ottaen emme tarvitse Start-Sleep
:ää tähän, mutta jos sitä ei käytetä, tämä koodi voi rampauttaa tietokoneesi. Nopeus, jolla se voisi jatkuvasti tarkistaa tämän tiedoston, olisi PowerShellistä kiinni!
Meidän ei tarvitse tarkistaa tätä tiedostoa .0455 ms:n välein. Sen sijaan meidän pitäisi hidastaa tätä tarkistusta ja suorittaa testi vain viiden sekunnin välein. While-silmukan hidastaminen on erinomainen Start-Sleep
-komennon käyttö.
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
Katso tämä esimerkki tämän cmdletin käytöstä mukavan edistymispalkin kanssa.