Príkaz PowerShell Start-Sleep: Syntax, príklady

26. augusta 2021 7353 Názory Powershell Sleep

Potrebujete na chvíľu odložiť skript PowerShell? Potom potrebujete príkaz PowerShell Start-Sleep.





Táto príručka vás naučí všetko, čo potrebujete vedieť o spánku PowerShell. Sprievodcu začínam vysvetlením syntaxe príkazu Start-Sleep.



Potom v poslednej časti príručky zdieľam 9 príkladov zo skutočného života, ako používať príkaz Štart-Spánok.

Prehľadávať témy príspevkov



Powershell Sleep: Syntax rutiny Start-Sleep

Powershell Sleep: Syntax rutiny Start-Sleep

Tu je syntax rutiny Start-Sleep:



|_+_| |_+_|

Tento cmdlet má dva parametre

milisekúnd – použite ho na určenie času (Int32) v milisekundách. PowerShell sa oneskorí o milisekundy, ktoré zadáte.



Napríklad, ak chcem odložiť svoj skript o 300 000 milisekúnd (5 minút), spustím príkaz nižšie:



|_+_|

sekúnd : Môžete tiež určiť dobu oneskorenia v sekundách. Ak to chcete urobiť, použite sekúnd parameter príkazu Štart-Spánok.

Ak chcete pokračovať v poslednom príklade, aby som odložil svoj skript o 5 minút (300 sekúnd), spustím príkaz nižšie:

|_+_|

Príklady spánku Powershell

Táto časť obsahuje niekoľko príkladov použitia Powershell Sleep na riešenie niektorých zložitých úloh, ako je odpočítavanie a ďalšie.

Ako nastaviť režim spánku PowerShell v milisekundách, 1 sekunde (alebo menej), minútach alebo na 1 hodinu

Ako som vysvetlil v poslednej časti, príkaz Start-Sleep má dve syntaxe, ako je uvedené nižšie:

|_+_|

Ak chcete nastaviť PowerShell na oneskorenie 30 000 milisekúnd (30 sekúnd), použite niektorý z nižšie uvedených príkazov:

|_+_|

Okrem toho môžete použiť parameter milisekundy na nastavenie spánku na menej ako 1 sekundu. Ak napríklad chcete odložiť skript PowerShell o 0,0005 sekundy (0,5 milisekúnd), môžete použiť ktorýkoľvek z nižšie uvedených príkazov:

|_+_|

V mojom treťom príklade v tejto podsekcii chcem nastaviť režim spánku PowerShell na 1 hodinu. Najlepším prístupom je použitie parametra sekúnd príkazu Štart-Spánok.

Ak to chcete urobiť, musíte previesť 1 hodinu na sekundy. Môžete to jednoducho urobiť vyhľadávaním previesť 1 hodinu na sekúnd v google.

Výsledkom je 3600 sekúnd. Ak teda chcete odložiť skript PowerShell o 1 hodinu, použite príkaz PowerShell Start-Sleep nižšie:

|_+_|

Ako môžete vidieť na snímke obrazovky nižšie, príkazový riadok PowerShell nebude k dispozícii, kým neuplynie oneskorenie (1 hodina).

Ako nastaviť režim spánku PowerShell v milisekundách, 1 sekunde (alebo menej), minútach alebo na 1 hodinu

Podobne môžete nastaviť PowerShell do režimu spánku na 5 minút pomocou príkazu nižšie:

|_+_| 5 minút sa rovná 300 sekundám

Ako používať Powershell Sleep to Countdown (funkcia Start-Count)

Napísal som funkciu PowerShell (Start-Count), ktorá odpočítava alebo zvyšuje. Funkcia má 4 parametre:

Odpočítavanie : Keď zadáte tento parameter, Start-Count odpočítava od zadaného čísla
CountUp: Prípadne špecifikovaním CountUp Parameter Start-Count počíta od zadaného čísla smerom nahor
CountFrom : Na rozdiel od Odpočítavanie a CountUp , tento parameter vyžaduje vstup. Použite toto na určenie čísla, od ktorého sa má odpočítavať alebo odpočítavať.
CountTo : Tento parameter použite na určenie čísla, do ktorého sa má počítať (nadol alebo nahor)

Pri sťahovaní a používaní funkcie Start-Count postupujte podľa nasledujúcich krokov:

  1. Kliknite na stiahnutie Start-Count.zip
  2. Potom rozbaľte súbor Start-Count.zip. Po rozbalení uvidíte priečinok s názvom Start-Count. Tento priečinok obsahuje modul PowerShell
  3. Skopírujte priečinok Start-Count do priečinka PowerShell Modules. Nachádza sa v C:Users ázov_profiluDocumentsWindowsPowerShellModules
  4. Odblokujte stiahnutý súbor modulu pomocou príkazu nižšie:
|_+_|
  1. Nakoniec otvorte PowerShell a spustite Start-Count. V prvom príklade chcem odpočítať od 10 do 0.
|_+_|

Príkaz začne odpočítavať od 10, kým nedosiahne nulu (0). Pozrite si snímku obrazovky nižšie…

starz play aktivovať roku
Ako používať Powershell Sleep to Countdown (funkcia Start-Count)

V tomto druhom príkaze počítam od 5 do 40…

|_+_|

Ako používať Powershell spánok s náhodným časom

Keď spustíte Start-Sleep, PowerShell odpočítava od začiatku zadaného času. Napríklad, ak spustím Start-Sleep a určím 20 sekúnd, PowerShell odpočítava 1 sekundu.

Ak však chcete, aby odpočítavanie bolo náhodné (teda odpočítavanie po 2, 5, 6), potom musíte skombinovať Start-Sleep a Get-Random.

Napríklad, ak chcem, aby PowerShell spal v intervaloch od 1 do 10 sekúnd, spustím príkaz nižšie:

|_+_|

Umiestnite tento príkaz pred spustením príkazov, ktoré chcete vykonať s náhodným oneskorením...

Ako spustiť režim Powershell Sleep do určitého času

V niektorých scenároch skriptovania PowerShell možno budete chcieť nastaviť spánok do určitého času. Môžete napríklad chcieť nastaviť spánok na 30 sekúnd.

Aby ste to dosiahli, potrebujete a Do , Až kým slučka.

V tomto príklade chcem, aby PowerShell spal, kým časovač nedosiahne 30 sekúnd.

Najprv nastavím čas začiatku a čas ukončenia. Čas začiatku je čas, od ktorého chcem počítať.

Aby som to uľahčil, budem počítať od 0.

V prvom rade si nastavím odkiaľ chcem počítať...

|_+_|

Potom si nastavím, kam chcem počítať...

|_+_|

Teraz použijem Do , Až kým slučka s Start-Sleep, ako je znázornené v skripte nižšie:

Spustite každý príkaz jeden po druhom |_+_| Celý skript Do, Until som dal do jedného riadku, aby som ho mohol spustiť v PowerShell. Ak chcete skript spustiť vPowerShell ISE, môžete to napísať takto: |_+_|

Ak však chcete spustiť skript v prostredí PowerShell, spustite každý z nižšie uvedených príkazov:

čo je najlepšia aplikácia craigslist pre iphone
|_+_|

Príkaz bude počítať od 0 do 30 s 1-sekundovým intervalom. Pozrite si snímku obrazovky nižšie…

Ako pridať režim spánku PowerShell po alebo pred príkazom

Toto je veľmi jednoduchý príklad. Ak chcete pridať oneskorenie po príkaze PowerShell, pridajte príkaz Štart-Spánok za príkaz PowerShell.

Napríklad, ak chcete pridať 5 minút čakania po spustení Get-Process, použite príkaz nižšie:

|_+_|

Ako je znázornené na snímke obrazovky nižšie, po dokončení príkazu Get-Process sa PowerShell nevráti na výzvu. To znamená, že oneskorenie 5 minút (300 sekúnd) je na mieste.

Ako pridať režim spánku PowerShell po alebo pred príkazom

Na opačnej strane vyššie uvedeného príkladu môžete tiež použiť režim spánku PowerShell na pridanie oneskorenia a potom spustiť príkaz.

Tentoraz namiesto pridávania Štart-Spánok za príkaz ho pridáme pred príkaz...

|_+_|

Tentokrát sa oneskorenie spustí pred spustením príkazu.

Ako používať režim spánku PowerShell na opätovné vyskúšanie skriptu

V snahe nájsť riešenie tohto problému som našiel existujúci skript, ktorý predložil a stackoverflow.com prispievateľ (Ansgar Wiechers).

Ansgar vytvoril funkciu nižšie. Nazval to Retry-Command. Zmenil som funkciu na Redo-Command, aby som použil sloveso schválené PowerShellom.

Okrem toho dávam plné uznanie Ansgarovi Wiechersovi. Tu je celý scenár…

|_+_|

Nahral som aj skript, ktorý si naši čitatelia môžu stiahnuť a použiť. Ak chcete stiahnuť a použiť funkciu, postupujte podľa nasledujúcich krokov:

  1. Kliknite na stiahnuť Redo-Command.zip . Potom rozbaľte stiahnutý súbor zip.
  2. Skopírujte rozbalený priečinok Redo-Command do c:usersDocumentsWindowsPowerShellModules
  3. Potom otvorte PowerShell a spustite príkaz uvedený nižšie - príkaz odomkne súbor. Toto prestane PowerShell neustále upozorňovať, že súbor bol stiahnutý z internetu
|_+_|
  1. Nakoniec, ak chcete použiť funkciu spánku PowerShell na opätovné vyskúšanie skriptu, spustite príkaz, ako je ten nižšie:
|_+_|

Predvolený pokus je 5-krát. Ak však chcete pridať vlastný pokus, použite parameter Maximum, ako je uvedené nižšie…

|_+_|

V poslednom príkaze sa 8-krát zopakuje, kým sa vráti chyba.

Ako uviesť skript PowerShell do režimu spánku, kým súbor neexistuje

Ak chcete prepnúť skript PowerShell do režimu spánku, kým súbor neexistuje, musíte použiť testovaciu cestu a spustenie spánku v slučke While.

Tu je všeobecná syntax slučky PowerShell While, ktorú potrebujete:

|_+_|

Aby som uviedol príklad, skontrolujem, či na jednotke D existuje súbor s názvom eventlog.txt. Skript nebude pokračovať, kým nebude súbor dostupný.

Tu je scenár…

|_+_|

Príkaz Test-Path skontroluje, či súbor existuje. Ak súbor existuje, Test-Path vráti hodnotu True.

Naopak, ak súbor neexistuje, Test-Path vráti hodnotu False. Pridaním ! pred Test-Path som výsledok obrátil.

Takže výsledok v slučke while je True, ak súbor neexistuje.

Príkaz hovorí v podstate toto: ak sa testovacia cesta d:eventlog.txt rovná Nepravdivé (Súbor NEEXISTUJE), návrat Pravda pre slučku while. Navyše, pokiaľ ide o podmienku while Pravda , vykonajte príkaz Štart-Spánok 10 (oneskorenie o 10 sekúnd).

Potom sa vráťte do podmienkovej časti cyklu while a skontrolujte, či súbor existuje. Ak nie, odložte ďalších 10 sekúnd. Táto slučka bude pokračovať, kým súbor nebude existovať – potom sa slučka preruší a PowerShell sa obnoví.

Aby som tento skript otestoval, najskôr ho spustím (bez súboru d:eventlog.txt)

Ako je vidieť na obrázku nižšie, cyklus while bude pokračovať, pretože súbor neexistuje.

Ako uviesť skript PowerShell do režimu spánku, kým súbor neexistuje

Aby som prerušil slučku, vytvorím súbor. Po vytvorení súboru sa slučka while preruší a PowerShell bude pokračovať (pozri snímku obrazovky nižšie):

Ako prinútiť PowerShell spať navždy, kým nestlačím Ctrl + C

Ak spúšťate príkaz, ktorý nechcete prerušiť, kým nestlačíte Ctrl + C, potrebujete cyklus while.

Ak chcete napríklad spustiť príkaz PowerShell – Get-EventLog – Aplikácia LogName – navždy (nepretržite, kým nestlačíte Ctrl + C), použite príkaz nižšie:

|_+_|

Príkaz robí toto: pokiaľ je príkaz v časti {} cyklu while pravdivý, pokračujte v behu.

hudobné aplikácie, ktoré nepoužívajú wifi

Ako prepnúť PowerShell do režimu spánku, kým sa nedokončí spustený proces

Tento príklad je presným opakom posledného príkladu. V poslednom príklade som nechal proces bežať nepretržite.

V tomto príklade však chcem, aby PowerShell spal, kým sa proces nedokončí. Po dokončení procesu sa spánok ukončí.

Podobne ako v predchádzajúcom príklade túto úlohu vykoná slučka while. Spôsob, akým je slučka while nakonfigurovaná, je však odlišný.

Tentokrát som príkaz vložil do bloku () cyklu while. Musím však dodať! pred príkazom.

Tu je môj príklad…

|_+_|

Tento príkaz hovorí PowerShellu, zatiaľ čo (Get-EventLog -LogName Application) je pravda, prepnite PowerShell do režimu spánku na 5 sekúnd. Po spánku PowerShell skontroluje, či je príkaz (Get-EventLog -LogName Application) stále spustený.

Ak stále beží, spustite spánok na ďalších 5 sekúnd. Táto slučka bude pokračovať, kým sa príkaz nedokončí...

Dúfam, že táto príručka bola pre vás ľahko pochopiteľná a užitočná! Ak ste považovali túto príručku za užitočnú, zahlasujte áno pre Bol tento príspevok užitočný? nižšie.

Môžete tiež poskytnúť podrobnú spätnú väzbu pomocou tlačidla ZANECHAŤ ODPOVEĎ na konci tejto stránky.

Nakoniec môžu byť užitočné aj naše ďalšie príručky PowerShell. Ak si chcete prečítať podrobnejšie príručky PowerShell, navštívte našu stránku PowerShell & CMD Explained.

Ešte jedna vec, než pôjdete, ak sa chcete naučiť PowerShell, možno budete chcieť pridať záložku na našu stránku PowerShell Tutorials.