PowerShell-cmdletten Start-Sleep eller alias sleep er en simpel cmdlet med et enkelt formål; at sætte et script på pause. Når den udføres i PowerShell-konsollen, et script, der udføres af konsollen eller i PowerShell ISE, sætter cmdlet’en blot et script eller modul i PowerShell-sessionen på pause fra at køre, indtil den ønskede tid i sekunder eller millisekunder er forløbet.

Denne cmdlet er enkel, men kan alligevel anvendes på et par forskellige måder, der gør det muligt for os scriptere at græskrive velskrevne scripts.

Start-Sleep Usage

Anvendelse af cmdletten Start-Sleep er ekstremt nem, da den trods alt kun har to parametre! Lad os sige, at jeg ønsker at sætte mit script på pause, fordi jeg venter på, at en anden miljøproces skal køre. Den proces tager ca. 10 sekunder, og jeg skal være sikker på, at mit script ikke bliver ved med at køre, før den eksterne hændelse er afsluttet.

For at sætte scriptet på pause i 10 sekunder bruger jeg blot Start-Sleep -Second 10. Hvis jeg vil være lidt anal om tingene, kunne jeg også angive tiden i millisekunder som Start-Sleep -Milliseconds 10000.

Eksempelkontekst

En af de mest almindelige anvendelser af denne Start-Sleep-cmdlet er inde i en while-sløjfe. En while-sløjfe er en konstruktion i PowerShell, der udfører kode, mens der sker noget andet. En af de bedste anvendelser af en while-sløjfe er at vente på, at noget andet skal ske. I stedet for blot at gætte, hvor lang tid en proces vil tage, og køre denne cmdlet direkte.

For eksempel skal du måske vente på, at en fil dukker op i en mappe. Måske er denne fil blevet lagt der af en anden software. Når filen er i mappen, skal du køre noget kode mod den. Dette eksempel er et glimrende eksempel på at bruge en while sløjfe og Start-Sleep.

I eksemplet nedenfor venter min kode på, at filen C:\File.txt dukker op. Hvis dette var i et script, ville det sætte scriptet på pause, indtil denne begivenhed indtræffer. Teknisk set har vi ikke brug for Start-Sleep til at gøre dette, men hvis denne kode ikke bruges, kan den lamme din computer. Hastigheden, hvormed den løbende kunne tjekke efter denne fil, ville være op til PowerShell!

Vi behøver ikke at tjekke denne fil hver .0455ms. I stedet bør vi sænke denne kontrol og kun udføre testen hvert femte sekund. At bremse en while-sløjfe er en glimrende anvendelse af kommandoen Start-Sleep.

$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}

For et eksempel på brug af denne cmdlet med en flot fremskridtslinje kan du se dette.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.