PowerShell Start-Sleep Commando: Syntaxis, Voorbeelden
Moet u een PowerShell-script een tijdje uitstellen? Dan hebt u de PowerShell Start-Sleep-opdracht nodig.
Deze gids leert u alles wat u moet weten over PowerShell-slaap. Ik begin de handleiding met het uitleggen van de syntaxis van het Start-Sleep-commando.
Vervolgens deel ik in het laatste deel van de gids 9 praktijkvoorbeelden van het gebruik van de opdracht Start-Sleep.
Blader door berichtonderwerpen
- Powershell-slaapstand: syntaxis van Start-Sleep-cmdlet
- Voorbeelden van Powershell-slaap
- PowerShell-slaapstand instellen in milliseconden, 1 seconde (of minder), minuten of gedurende 1 uur
- Hoe Powershell Sleep te gebruiken om af te tellen (Start-Count-functie)
- Hoe Powershell Sleep met willekeurige tijd te gebruiken?
- Hoe Powershell Sleep tot een bepaalde tijd te gebruiken?
- PowerShell-slaapstand toevoegen na of voor een opdracht
- PowerShell Sleep gebruiken om een script opnieuw te proberen
- Een PowerShell-script in de slaapstand zetten totdat het bestand bestaat
- Hoe u PowerShell voor altijd kunt laten slapen totdat ik op Ctrl + C . druk
- Hoe PowerShell te slapen totdat het lopende proces is voltooid
Powershell-slaapstand: syntaxis van Start-Sleep-cmdlet
Hier is de syntaxis van Start-Sleep Cmdlet:
|__+_| |__+_|
Deze cmdlet heeft twee parameters:
milliseconden – gebruik het om de tijd (Int32) in milliseconden op te geven. PowerShell vertraagt de milliseconden die u invoert.
Als ik bijvoorbeeld mijn script 300000 milliseconden (5 minuten) wil uitstellen, voer ik de onderstaande opdracht uit:
uit html5 offline opslag|__+_|
seconden : U kunt de vertragingsperiode ook in seconden specificeren. Gebruik hiervoor de seconden parameter van het Start-Sleep-commando.
Om door te gaan met het laatste voorbeeld, om mijn script 5 minuten (300 seconden) uit te stellen, voer ik de onderstaande opdracht uit:
|__+_|Voorbeelden van Powershell-slaap
Dit gedeelte bevat enkele voorbeelden van het gebruik van Powershell Sleep om complexe taken op te lossen, zoals aftellen en meer.
PowerShell-slaapstand instellen in milliseconden, 1 seconde (of minder), minuten of gedurende 1 uur
Zoals ik in de laatste sectie heb uitgelegd, heeft de opdracht Start-Sleep twee syntaxis, zoals hieronder weergegeven:
|__+_|Gebruik een van de onderstaande opdrachten om PowerShell in te stellen op een vertraging van 30000 milliseconden (30 seconden):
|__+_|Bovendien kunt u de parameter Milliseconde gebruiken om de slaapstand in te stellen op minder dan 1 seconde. Als u bijvoorbeeld een PowerShell-script 0,0005 seconden (0,5 milliseconden) wilt uitstellen, kunt u een van de onderstaande opdrachten gebruiken:
|__+_|In mijn derde voorbeeld in deze subsectie wil ik de PowerShell-slaapstand gedurende 1 uur instellen. De beste aanpak hier is om de parameter Seconds van de opdracht Start-Sleep te gebruiken.
Om dat te doen, moet je echter 1 uur naar seconden converteren. U kunt dit eenvoudig doen door te zoeken 1 uur converteren naar seconden op google.
Het resultaat is 3600 seconden. Dus om een PowerShell-script met 1 uur uit te stellen, gebruikt u de PowerShell Start-Sleep-opdracht hieronder:
|__+_|Zoals u kunt zien in de onderstaande schermafbeelding, is de PowerShell-opdrachtprompt pas beschikbaar nadat de vertraging (1 uur) voorbij is.
Op dezelfde manier kunt u PowerShell 5 minuten laten slapen met behulp van de onderstaande opdracht:
|__+_| 5 minuten is gelijk aan 300 secondenHoe Powershell Sleep te gebruiken om af te tellen (Start-Count-functie)
Ik schreef een PowerShell-functie (Start-Count), die aftelt of optelt. De functie heeft 4 parameters:
Aftellen : Wanneer u deze parameter opgeeft, telt Start-Count af vanaf een opgegeven nummer
CountUp: Als alternatief, het specificeren van de Optellen parameter zorgt ervoor dat Start-Count omhoog telt vanaf een opgegeven nummer
Tel vanaf : In tegenstelling tot de Aftellen en Optellen , deze parameter vereist een invoer. Gebruik dit om het nummer op te geven waarvan u wilt aftellen of optellen.
Tellen tot : gebruik deze parameter om het nummer op te geven waarnaar moet worden geteld (omlaag of omhoog)
Volg de onderstaande stappen om de Start-Count-functie te downloaden en te gebruiken:
- Klik op Start-Count.zip downloaden
- Pak vervolgens Start-Count.zip uit. Bij het uitpakken ziet u een map met de naam Start-Count. Deze map bevat de PowerShell-module
- Kopieer de map Start-Count naar uw map PowerShell Modules. Deze bevindt zich in C:Usersprofile_nameDocumentsWindowsPowerShellModules
- Deblokkeer het gedownloade modulebestand met de onderstaande opdracht:
- Open ten slotte PowerShell en voer Start-Count uit. In het eerste voorbeeld wil ik aftellen van 10 naar 0.
Het commando begint af te tellen vanaf 10 totdat het nul (0) bereikt. Zie onderstaande schermafbeelding...
In dit tweede commando tel ik van 5 naar 40...
|__+_|
Hoe Powershell Sleep met willekeurige tijd te gebruiken?
Wanneer u Start-Sleep uitvoert, telt PowerShell af vanaf het begin van de opgegeven tijd. Als ik bijvoorbeeld Start-Sleep uitvoer en 20 seconden opgeef, telt PowerShell af met 1 seconde.
Als u echter wilt dat het aftellen willekeurig is (dat wil zeggen, aftellen met 2, 5, 6), dan moet u Start-Sleep en Get-Random combineren.
Als ik bijvoorbeeld wil dat PowerShell met tussenpozen tussen 1 en 10 seconden slaapt, voer ik de onderstaande opdracht uit:
|__+_|Plaats deze opdracht voordat u de opdrachten uitvoert die u met willekeurige vertraging wilt uitvoeren...
Hoe Powershell Sleep tot een bepaalde tijd te gebruiken?
In sommige PowerShell-scriptscenario's wilt u wellicht de slaapstand instellen tot een bepaalde tijd. U kunt bijvoorbeeld de slaapstand 30 seconden instellen.
Om dit te bereiken heb je een Doen , Tot lus.
In dit voorbeeld wil ik dat PowerShell slaapt totdat de timer 30 seconden bereikt.
Eerst stel ik de starttijd en de eindtijd in. De starttijd is de tijd vanaf waar ik wil tellen.
Om het makkelijk te maken, tel ik vanaf 0.
Allereerst stel ik in vanaf waar ik wil tellen....
|__+_|Dan zal ik instellen waar ik wil tellen tot...
hoe je een item in roblox neerzet|__+_|
Nu, ik zal gebruiken Doen , Tot loop met Start-Sleep zoals weergegeven in het onderstaande script:
Voer elke opdracht één voor één uit |__+_| Ik heb het hele Do, Until-script in een enkele regel gezet, zodat ik het in PowerShell kan uitvoeren. Als u het script wilt uitvoeren inPowerShell ISE, je kunt het schrijven zoals hieronder weergegeven: |_+_|Als u het script echter in PowerShell wilt uitvoeren, voert u elk van de onderstaande opdrachten uit:
|__+_|De opdracht telt van 0 tot 30, met een interval van 1 seconde. Zie onderstaande schermafbeelding...
PowerShell-slaapstand toevoegen na of voor een opdracht
Dit is een heel eenvoudig voorbeeld. Als u een vertraging wilt toevoegen na een PowerShell-opdracht, voegt u de Start-Sleep-opdracht toe na de PowerShell-opdracht.
Als u bijvoorbeeld 5 minuten wachttijd wilt toevoegen na het uitvoeren van Get-Process, gebruikt u de onderstaande opdracht:
|__+_|Zoals te zien is in de onderstaande schermafbeelding, keert PowerShell niet terug naar de prompt wanneer de opdracht Get-Process is voltooid. Dit geeft aan dat de vertraging van 5 minuten (300 seconden) van kracht is.
Aan de andere kant van het bovenstaande voorbeeld kunt u ook PowerShell-slaapstand gebruiken om een vertraging toe te voegen en vervolgens een opdracht uit te voeren.
Deze keer, in plaats van Start-Sleep toe te voegen na het commando, voegen we het toe voor het commando...
|__+_|Deze keer treedt de vertraging in werking voordat de opdracht wordt uitgevoerd.
PowerShell Sleep gebruiken om een script opnieuw te proberen
Bij het zoeken naar een oplossing hiervoor, vond ik een bestaand script ingediend door a stackoverflow.com medewerker (Ansgar Wiechers).
Ansgar heeft de onderstaande functie gemaakt. Hij noemde het Retry-Command. Ik heb de functie gewijzigd in Redo-Command om een door PowerShell goedgekeurd werkwoord te gebruiken.
Verder geef ik Ansgar Wiechers alle eer. Hier is het volledige script...
|__+_|Nou, ik heb ook het script geüpload voor onze lezers om te downloaden en te gebruiken. Volg de onderstaande stappen om de functie te downloaden en te gebruiken:
- Klik op Redo-Command.zip downloaden. Pak vervolgens het gedownloade zipbestand uit.
- Kopieer de uitgepakte map Redo-Command naar c:usersDocumentsWindowsPowerShellModules
- Open vervolgens PowerShell en voer de onderstaande opdracht uit - de opdracht ontgrendelt het bestand. Hierdoor wordt voorkomen dat PowerShell u voortdurend waarschuwt dat het bestand van internet is gedownload
- Als u ten slotte de PowerShell-functie Sleep wilt gebruiken om een script opnieuw te proberen, voert u een opdracht uit zoals hieronder:
De standaard nieuwe poging is 5 keer. Als u echter een aangepaste nieuwe poging wilt toevoegen, gebruikt u de parameter Maximum zoals hieronder weergegeven...
|__+_|In de laatste opdracht krijg je 8 keer een nieuwe poging voordat er een fout wordt geretourneerd.
Een PowerShell-script in de slaapstand zetten totdat het bestand bestaat
Als u een PowerShell-script in de slaapstand wilt zetten totdat er een bestand bestaat, moet u Test-Path en Start-Sleep in een While-lus gebruiken.
Hier is de algemene syntaxis van de PowerShell While-lus die u nodig hebt:
|__+_|Om een voorbeeld te geven, ik zal controleren of er een bestand met de naam eventlog.txt in station D bestaat. Het script gaat pas verder als het bestand beschikbaar is.
Hier is het script…
|__+_|De opdracht Test-Path controleert of er een bestand bestaat. Als het bestand bestaat, retourneert Test-Path True.
Integendeel, als het bestand niet bestaat, retourneert Test-Path False. Door toe te voegen ! vóór Test-Path heb ik het resultaat omgekeerd.
Het resultaat in de while-lus is dus True als het bestand niet bestaat.
I essentie, wat het commando zegt is dit: als Test-Path d:eventlog.txt gelijk is aan niet waar (Het bestand bestaat NIET), return Waar voor de while-lus. Bovendien, voor zover de while-voorwaarde is Waar , voer het commando Start-Sleep 10 uit (vertragingen van 10 seconden).
Keer dan terug naar het voorwaardegedeelte van de while-lus en controleer of het bestand bestaat. Zo niet, wacht dan nog eens 10 seconden. Deze lus gaat door totdat het bestand bestaat - dan wordt de lus verbroken en wordt PowerShell hervat.
Om dit script te testen, zal ik het eerst uitvoeren (zonder het bestand, d:eventlog.txt)
Zoals te zien is in de onderstaande schermafbeelding, gaat de while-lus door omdat het bestand niet bestaat.
Om de lus te doorbreken, zal ik het bestand maken. Zodra ik het bestand heb gemaakt, wordt de while-lus verbroken en gaat PowerShell verder (zie de onderstaande schermafbeelding):
Hoe u PowerShell voor altijd kunt laten slapen totdat ik op Ctrl + C . druk
Als u een opdracht uitvoert die u niet wilt verbreken totdat u op Ctrl + C drukt, hebt u de while-lus nodig.
doe smart tv-app
Als u bijvoorbeeld de PowerShell-opdracht – Get-EventLog -LogName Application – voor altijd wilt uitvoeren (continu, totdat u op Ctrl + C drukt), gebruikt u de onderstaande opdracht:
|__+_|Wat het commando doet is dit: voor zover het commando in het {} deel van de while-lus waar is, ga je door met draaien.
Hoe PowerShell te slapen totdat het lopende proces is voltooid
Dit voorbeeld is het tegenovergestelde van het laatste voorbeeld. In het laatste voorbeeld heb ik een proces continu laten draaien.
In dit voorbeeld wil ik echter dat PowerShell slaapt totdat het proces is voltooid. Zodra het proces is voltooid, wordt de slaap beëindigd.
Net als in het vorige voorbeeld, zal een while-lus het werk doen. De manier waarop de while-lus is geconfigureerd, is echter anders.
Deze keer plaatste ik het commando in het () blok van de while-lus. Ik moet echter toevoegen! voor de opdracht.
Hier is mijn voorbeeld...
|__+_|Deze opdracht zegt tegen Power shell, terwijl (Get-EventLog -LogName Application) waar is, Power shell 5 seconden laten slapen. Na de slaap controleert PowerShell of de opdracht (Get-EventLog -LogName Application) nog steeds actief is.
Als het nog steeds actief is, begin dan nog 5 seconden met slapen. Deze lus gaat door totdat de opdracht is voltooid ...
Ik hoop dat je deze gids zowel gemakkelijk te begrijpen als nuttig vond! Als u de gids nuttig vond, stem dan alstublieft Ja op Was dit bericht nuttig? onderstaand.
U kunt ook gedetailleerde feedback geven met behulp van de knop LAAT EEN ANTWOORD achter aan het einde van deze pagina.
Ten slotte vindt u onze andere PowerShell-handleidingen misschien nuttig. Bezoek onze PowerShell & CMD Explained-pagina om meer inzichtelijke PowerShell-handleidingen te lezen.
Nog één ding voordat je gaat, als je PowerShell wilt leren, kun je een bladwijzer maken voor onze PowerShell-zelfstudiepagina.


