PowerShell Start-Sleep Kommando: Syntax, Exempel
Behöver du fördröja ett PowerShell-skript ett tag? Sedan behöver du kommandot PowerShell Start-Sleep.
Den här guiden lär dig allt du behöver veta om PowerShell-sömn. Jag börjar guiden med att förklara syntaxen för kommandot Start-Sleep.
Sedan, i det sista avsnittet av guiden, delar jag med mig av 9 verkliga exempel på hur man använder kommandot Start-Sleep.
Bläddra bland inläggsämnen
- Powershell Sleep: Syntax för Start-Sleep Cmdlet
- Exempel på Powershell-sömn
- Hur man ställer in PowerShell-sömn på millisekunder, 1 sekund (eller mindre), minuter eller i 1 timme
- Hur man använder Powershell Sleep To Countdown (Start-Count-funktion)
- Hur man använder Powershell Sleep med slumpmässig tid
- Hur man kör Powershell Sleep till en viss tid
- Hur man lägger till PowerShell Sleep efter eller före ett kommando
- Hur man använder PowerShell Sleep för att försöka med ett skript igen
- Hur man sätter ett PowerShell-skript i viloläge tills filen finns
- Hur man får PowerShell att sova för alltid tills jag trycker på Ctrl + C
- Hur man PowerShell sover tills körningen är klar
Powershell Sleep: Syntax för Start-Sleep Cmdlet
Här är syntaxen för Start-Sleep Cmdlet:
|_+_| |_+_|
Denna cmdlet har två parametrar
Millisekunder – använd den för att ange tiden (Int32) i millisekunder. PowerShell kommer att fördröja de millisekunder du anger.
Till exempel, om jag vill fördröja mitt skript i 300 000 millisekunder (5 minuter), kör jag kommandot nedan:
|_+_|
Sekunder : Du kan också ange fördröjningsperioden i sekunder. För att göra detta, använd Sekunder parametern för kommandot Start-Sleep.
För att fortsätta med det sista exemplet, för att fördröja mitt skript i 5 minuter (300 sekunder), kör jag kommandot nedan:
|_+_|Exempel på Powershell-sömn
Det här avsnittet har några exempel på hur du använder Powershell Sleep för att lösa vissa komplexa uppgifter som nedräkning och mer.
Hur man ställer in PowerShell-sömn på millisekunder, 1 sekund (eller mindre), minuter eller i 1 timme
Som jag förklarade i det förra avsnittet har kommandot Start-Sleep två syntaxer, som visas nedan:
|_+_|För att ställa in PowerShell på fördröjning i 30 000 millisekunder (30 sekunder), använd något av kommandona nedan:
|_+_|Dessutom kan du använda Milliseconds parameter för att ställa in viloläge till mindre än 1 sekund. Om du till exempel vill fördröja ett PowerShell-skript i 0,0005 sekunder (0,5 millisekunder), kan du använda något av kommandona nedan:
|_+_|I mitt tredje exempel i det här underavsnittet vill jag ställa in PowerShell-sömn i 1 timme. Det bästa tillvägagångssättet här är att använda parametern Seconds för kommandot Start-Sleep.
För att göra det måste du konvertera 1 timme till sekunder. Du kan enkelt göra detta genom att söka konvertera 1 timme till sekunder i google.
Resultatet är 3600 sekunder. Så för att fördröja ett PowerShell-skript med 1 timme använd PowerShell Start-Sleep-kommandot nedan:
|_+_|Som du kan se från skärmdumpen nedan kommer PowerShell-kommandotolken inte att vara tillgänglig förrän fördröjningen (1 timme) är över.
På samma sätt kan du ställa in PowerShell på viloläge i 5 minuter med kommandot nedan:
Galaxy S7 varningskamera misslyckades|_+_| 5 minuter motsvarar 300 sekunder
Hur man använder Powershell Sleep To Countdown (Start-Count-funktion)
Jag skrev en PowerShell-funktion (Start-Count), som räknar ner eller upp. Funktionen har 4 parametrar:
Nedräkning : När du anger den här parametern, räknar Start-Count ner från ett angivet antal
CountUp: Alternativt, specificera Räkna upp parametern gör att Start-Count räknas uppåt från ett specificerat antal
Räkna från : Till skillnad från Nedräkning och Räkna upp , kräver denna parameter en ingång. Använd detta för att ange numret som ska räknas ner eller upp från.
Räkna till : Använd den här parametern för att ange numret som ska räknas till (ned eller upp)
Följ stegen nedan för att ladda ner och använda Start-Count-funktionen:
- Klicka på ladda ner Start-Count.zip
- Packa sedan upp Start-Count.zip. När du packar upp kommer du att se en mapp som heter Start-Count. Den här mappen innehåller PowerShell-modulen
- Kopiera mappen Start-Count till mappen PowerShell Modules. Detta finns i C:Usersprofile_nameDocumentsWindowsPowerShellModules
- Avblockera den nedladdade modulfilen med kommandot nedan:
- Öppna slutligen PowerShell och kör Start-Count. I det första exemplet vill jag räkna ner från 10 till 0.
Kommandot börjar räkna ned från 10 tills det når noll (0). Se skärmdumpen nedan...
I det här andra kommandot räknar jag upp från 5 till 40...
|_+_|
Hur man använder Powershell Sleep med slumpmässig tid
När du kör Start-Sleep, räknar PowerShell ner från toppen av den angivna tiden. Till exempel, om jag kör Start-Sleep och anger 20 sekunder, kommer PowerShell att räkna ned med 1 sekund.
Men om du vill att nedräkningen ska vara randomiserad (det vill säga räkna ner med 2, 5, 6), måste du kombinera Start-Sleep och Get-Random.
Till exempel, om jag vill att PowerShell ska sova med intervaller mellan 1 och 10 sekunder, kör jag kommandot nedan:
|_+_|Placera det här kommandot innan du kör de kommandon du vill utföra med slumpmässig fördröjning...
Hur man kör Powershell Sleep till en viss tid
I vissa PowerShell-skriptscenarier kanske du vill ställa in viloläge till en viss tid. Du kanske till exempel vill ställa in viloläge i 30 sekunder.
För att uppnå detta behöver du en Do , Fram tills slinga.
I det här exemplet vill jag att PowerShell ska sova tills timern når 30 sekunder.
Först ställer jag in starttid och sluttid. Starttiden är den tid jag vill räkna från.
För att göra det enkelt kommer jag att räkna från 0.
Först och främst kommer jag att ställa in var jag vill räkna från...
|_+_|Sedan ställer jag in var jag vill räkna till...
|_+_|Nu ska jag använda Do , Fram tills loop med Start-Sleep som visas i skriptet nedan:
Kör varje kommando ett i taget |_+_| Jag lägger hela Do, Until-skriptet på en enda rad så att jag kan köra det i PowerShell. Om du vill köra skriptet iPowerShell ISE, kan du skriva det som visas nedan: |_+_|Men för att köra skriptet i PowerShell, kör vart och ett av kommandona nedan:
|_+_|Kommandot räknas från 0 till 30, med ett intervall på 1 sekund. Se skärmdumpen nedan...
hur man lägger till minecraft windows 10 till ånga
Hur man lägger till PowerShell Sleep efter eller före ett kommando
Detta är ett mycket enkelt exempel. Om du vill lägga till en fördröjning efter ett PowerShell-kommando, lägg till kommandot Start-Sleep efter PowerShell-kommandot.
Till exempel, för att lägga till 5 minuters väntetid efter att ha kört Get-Process, använd kommandot nedan:
|_+_|Som visas i skärmdumpen nedan, när Get-Process-kommandot är klart, återgår inte PowerShell till sin prompt. Detta indikerar att fördröjningen på 5 minuter (300 sekunder) är på plats.
hur man tar bort uppblåsning från tänd eld
På motsatt sida av exemplet ovan kan du också använda PowerShell-sömn för att lägga till en fördröjning och sedan köra ett kommando.
Den här gången, istället för att lägga till Start-Sleep efter kommandot, lägger vi till det före kommandot...
|_+_|Den här gången kommer fördröjningen att börja innan kommandot körs.
Hur man använder PowerShell Sleep för att försöka med ett skript igen
När jag försökte hitta en lösning på detta hittade jag ett befintligt manus som skickats in av a stackoverflow.com bidragsgivare (Ansgar Wiechers).
Ansgar skapade funktionen nedan. Han kallade det Retry-Command. Jag ändrade funktionen till Redo-Command för att använda ett PowerShell-godkänt verb.
Utöver det ger jag Ansgar Wiechers full kredit. Här är hela manuset...
|_+_|Tja, jag laddade också upp skriptet så att våra läsare kan ladda ner och använda. För att ladda ner och använda funktionen, följ stegen nedan:
- Klicka på ladda ned Redo-Command.zip . Packa sedan upp den nedladdade zip-filen.
- Kopiera den uppackade mappen, Redo-Command till c:usersDocumentsWindowsPowerShellModules
- Öppna sedan PowerShell och kör kommandot nedan - kommandot låser upp filen. Detta slutar att PowerShell ständigt varnar dig om att filen laddades ner från internet
- Slutligen, för att använda PowerShell-funktionen Sleep för att försöka igen ett skript, kör ett kommando som det nedan:
Standardförsöket igen är 5 gånger. Men om du vill lägga till ett anpassat försök igen, använd parametern Maximum som visas nedan...
|_+_|I det sista kommandot får du ett nytt försök 8 gånger innan ett fel returneras.
Hur man sätter ett PowerShell-skript i viloläge tills filen finns
För att sätta ett PowerShell-skript i viloläge tills en fil finns, måste du använda Test-Path och Start-Sleep in a While loop.
Här är den allmänna syntaxen för PowerShell While-slingan du behöver:
|_+_|För att ge ett exempel ska jag kontrollera om det finns en fil som heter eventlog.txt i enhet D. Skriptet fortsätter inte förrän filen är tillgänglig.
Här är manuset...
|_+_|Kommandot Test-Path kontrollerar om en fil finns. Om filen finns returnerar Test-Path True.
Tvärtom, om filen inte finns, returnerar Test-Path False. Genom att lägga till ! innan Test-Path vände jag om resultatet.
Så resultatet i while-loopen är True om filen inte finns.
Vad kommandot säger är detta: om Test-Path d:eventlog.txt är lika med Falsk (Filen finns INTE), returnera Sann för while-slingan. Dessutom, så långt som medan villkoret är Sann , kör kommandot Start-Sleep 10 (fördröjer i 10 sekunder).
Återgå sedan till villkorsdelen av while-loopen och kontrollera om filen finns. Om inte, fördröj med ytterligare 10 sekunder. Denna loop kommer att fortsätta tills filen finns – då kommer loopen att bryta och PowerShell kommer att återupptas.
För att testa det här skriptet kör jag det först (utan filen, d:eventlog.txt)
Som framgår av skärmdumpen nedan kommer while-loopen att fortsätta eftersom filen inte finns.
För att bryta loopen kommer jag att skapa filen. När jag väl har skapat filen kommer while-slingan att bryta och PowerShell fortsätter (se skärmdumpen nedan):
din it-administratör har begränsad åtkomst till
Hur man får PowerShell att sova för alltid tills jag trycker på Ctrl + C
Om du kör ett kommando som du inte vill bryta förrän du trycker på Ctrl + C, behöver du while-loopen.
Till exempel, för att köra PowerShell-kommandot – Get-EventLog -LogName Application – för alltid (kontinuerligt, tills du trycker på Ctrl + C), använd kommandot nedan:
|_+_|Vad kommandot gör är detta: så långt som kommandot i {}-delen av while-loopen är sant, fortsätt att köra.
Hur man PowerShell sover tills körningen är klar
Detta exempel är raka motsatsen till det förra exemplet. I det sista exemplet höll jag en process igång kontinuerligt.
Men i det här exemplet vill jag att PowerShell ska vila tills processen är klar. När processen är klar upphör sömnen.
Precis som i föregående exempel kommer en while-loop att göra jobbet. Sättet while-slingan är konfigurerad är dock annorlunda.
Den här gången lägger jag kommandot i ()-blocket i while-loopen. Men jag måste tillägga! före kommandot.
Här är mitt exempel...
|_+_|Detta kommando säger till PowerShell, medan (Get-EventLog -LogName Application) är sant, gör PowerShell vila i 5 sekunder. Efter viloläget kommer PowerShell att kontrollera om kommandot (Get-EventLog -LogName Application) fortfarande körs.
Om den fortfarande är igång, börja sova i ytterligare 5 sekunder. Denna loop kommer att fortsätta tills kommandot slutförs...
Jag hoppas att du tyckte att den här guiden var både lättförståelig och användbar! Om du tyckte att guiden var till hjälp, rösta ja till Var det här inlägget användbart? Nedan.
Du kan också ge detaljerad feedback med hjälp av LÄMNA ETT SVAR i slutet av denna sida.
Slutligen kan du ha nytta av våra andra PowerShell-guider. För att läsa mer insiktsfulla PowerShell-guider, besök vår PowerShell & CMD Explained-sida.
En sak till innan du går, om du vill lära dig PowerShell, kanske du vill bokmärka vår PowerShell-handledningssida.


