The PowerShell Start-Sleep cmdlet ou o sleep alias é um simples cmdlet com um único propósito; pausar um script. Quando executado, na consola PowerShell, um script executado pela consola ou no PowerShell ISE, o cmdlet pausa apenas um script ou módulo na sessão PowerShell de correr até ter decorrido o tempo necessário em segundos ou milissegundos.

Este cmdlet é simples mas pode ser aplicado de algumas maneiras diferentes que nos permitirão a nós, os scripts, greate scripts bem escritos.

Start-Sleep Usage

Usar o cmdlet Start-Sleep é extremamente fácil uma vez que, afinal de contas, só tem dois parâmetros! Digamos que eu quero pausar o meu script porque estou esperando que algum outro processo ambiental seja executado. Esse processo leva cerca de 10 segundos, e eu preciso ter certeza de que meu script não continua rodando antes que esse evento externo seja feito.

Para pausar o script por 10 segundos, eu usaria apenas Start-Sleep -Second 10. Se eu quiser analisar as coisas, eu também poderia especificar o tempo em milisegundos como Start-Sleep -Milliseconds 10000.

Contexto de Exemplo

Um dos usos mais comuns deste cmdlet Start-Sleep está dentro de um loop de while. Um while loop é uma construção em PowerShell que executa código enquanto algo mais está acontecendo. Um dos melhores usos de um loop while é esperar que algo mais aconteça. Ao invés de apenas adivinhar quanto tempo um processo vai levar e rodar este cmdlet diretamente.

Por exemplo, talvez você precise esperar que um arquivo apareça em uma pasta. Talvez esse arquivo seja descartado lá por algum outro software. Uma vez que o arquivo esteja na pasta, você precisa executar algum código contra ele. Este exemplo é um excelente exemplo de utilização de um laço while e Start-Sleep.

No exemplo abaixo, o meu código está à espera que o ficheiro C:\File.txt apareça. Se isso estivesse em um script, ele pausaria o script até que esse evento acontecesse. Tecnicamente, não precisamos de Start-Sleep para fazer isso, mas se não for usado, esse código pode aleijar seu computador. A velocidade a que ele poderia verificar continuamente este arquivo seria até PowerShell!

Não precisamos verificar este arquivo a cada .0455ms. Em vez disso, devíamos abrandar essa verificação e fazer o teste apenas a cada cinco segundos. Abrandar um pouco o loop down é um excelente uso do comando Start-Sleep comando.

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

Para um exemplo de uso deste cmdlet com uma barra de progresso agradável, veja isto.

Deixe uma resposta

O seu endereço de email não será publicado.