Het PowerShell Start-Sleep cmdlet of de sleep
alias is een eenvoudig cmdlet met een enkel doel; het pauzeren van een script. Wanneer uitgevoerd, in de PowerShell console, een script uitgevoerd door de console of in de PowerShell ISE, het cmdlet pauzeert alleen een script of module in de PowerShell sessie van het runnen van totdat de gewenste tijd in seconden of milliseconden zijn verstreken.
Dit cmdlet is eenvoudig maar kan op een paar verschillende manieren worden toegepast waarmee wij scripters goed geschreven scripts kunnen begeren.
Start-Slaap Gebruik
Het gebruik van het Start-Slaap cmdlet is uiterst eenvoudig omdat het tenslotte maar twee parameters heeft! Laten we zeggen dat ik mijn script wil pauzeren omdat ik wacht op een ander omgevingsproces. Dat proces duurt ongeveer 10 seconden, en ik moet er zeker van zijn dat mijn script niet blijft draaien voordat die externe gebeurtenis klaar is.
Om het script 10 seconden te pauzeren, zou ik gewoon Start-Sleep -Second 10
gebruiken. Als ik het echt serieus wil nemen, kan ik ook de tijd in milliseconden opgeven, zoals Start-Sleep -Milliseconds 10000.
Voorbeeld Context
Eén van de meest voorkomende toepassingen van dit Start-Sleep cmdlet is binnen een while
-lus. Een while
-lus is een constructie in PowerShell die code uitvoert terwijl er iets anders gebeurt. Een van de beste manieren om een while
loop te gebruiken is om te wachten tot er iets anders gebeurt. In plaats van te raden hoe lang een proces gaat duren en dit cmdlet direct uit te voeren.
Bij voorbeeld, misschien moet je wachten tot een bestand in een map verschijnt. Misschien is dat bestand daar neergezet door een andere software. Als het bestand eenmaal in de map staat, moet je er wat code tegenaan gooien. Dit voorbeeld is een uitstekend voorbeeld van het gebruik van een while
-lus en Start-Sleep
.
In het onderstaande voorbeeld wacht mijn code op het C:\File.txt
-bestand om op te duiken. Als dit in een script zou staan, zou het het script pauzeren totdat deze gebeurtenis zich voordoet. Technisch gezien hebben we Start-Sleep
niet nodig om dit te doen, maar als deze code niet wordt gebruikt, kan hij uw computer lamleggen. De snelheid waarmee dit bestand continu wordt gecontroleerd, is aan PowerShell!
We hoeven dit bestand niet elke .0455ms te controleren. In plaats daarvan moeten we de controle vertragen en de test slechts elke vijf seconden uitvoeren. Het vertragen van een while-lus is een uitstekend gebruik van het Start-Sleep
commando.
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
Voor een voorbeeld van het gebruik van dit cmdlet met een mooie voortgangsbalk, kijk hier eens.