Como interromper temporariamente um script do PowerShell para depuração



Scripts são uma maneira bastante prática de automatizar tarefas no Windows, especialmente com o PowerShell. Mas, às vezes, durante scripts mais longos ou quando você deseja um ponto de verificação manual, é preciso pausar o processo. Talvez esperar alguns segundos ou dar ao usuário a chance de pressionar uma tecla antes de continuar.É aí que alguns desses comandos se tornam úteis — eles não são perfeitos, mas funcionam na maioria das vezes e evitam muita dor de cabeça quando você está trabalhando com scripts.

  • Ativar script do Windows PowerShell.

Para que essas pausas funcionem da maneira desejada, você pode inserir comandos que façam o script esperar. Trata-se principalmente de temporização ou de instruções para o usuário, e isso realmente ajuda a garantir que as coisas sejam feitas na ordem correta, sem pressa.

Como pausar um script do PowerShell por um período de tempo definido

Quer fazer seu script esperar por um número fixo de segundos? Dois comandos são seus aliados aqui: `pause` Start-Sleepe ​​` Timeoutwait`.Por quê? Porque eles permitem que você pause exatamente pelo tempo que quiser, mas fazem isso de maneiras diferentes em termos de flexibilidade.

  • O Start-Sleepcomando é simples. Basta digitar Start-Sleep -Seconds 5(ou apenas Start-Sleep 5) e o script será congelado por 5 segundos. Perfeito se você só quer um atraso sem complicações.
  • O Timeoutcomando é um pouco ardiloso. Inicialmente, ele faz a mesma coisa — pausa pelo número de segundos especificado —, mas aqui está o truque: ele fica à escuta de qualquer tecla pressionada e pode ser interrompido. Portanto, se você pressionar qualquer tecla durante o tempo limite, a espera é cancelada imediatamente e a execução prossegue. Isso é útil se você quiser um atraso fixo que o usuário possa ignorar.

Exemplo:

Start-Sleep -Seconds 5

ou

Timeout /T 5

Na minha experiência, o `break` Start-Sleeptende a ser mais confiável e previsível. O `pause` Timeouté mais flexível porque pode ser cancelado, mas às vezes é irritante quando você só quer uma pausa completa.

Interromper um script do PowerShell com entrada do usuário

Se você quiser adicionar uma pausa manual até que alguém pressione uma tecla, o pausecomando tradicional ainda funciona — é um pouco antiquado, mas às vezes é mais simples. Ele exibe a mensagem “Pressione qualquer tecla para continuar…” e aguarda essa entrada antes de prosseguir.

É só aparecer:

Pause

Isso é útil se o seu script for para ser executado manualmente, e não automaticamente. No entanto, esteja ciente de que ele não fará nada se o script for executado sem supervisão ou como uma tarefa agendada, pois não haverá ninguém por perto para pressionar uma tecla.

Funciona pausetambém no prompt de comando (cmd.exe)?

Sim, funciona. E, curiosamente, timeouttambém funciona lá, o que o torna útil para arquivos em lote. Claro, sleepnão funciona no cmd, o que pode ser confuso se você estiver acostumado com Linux ou outros ambientes. Mas a combinação de `ls` timeoute `ls` pausecobre a maioria dos cenários para scripts do Windows.

Observação: Como o Windows gosta de complicar as coisas, às vezes você pode precisar executar scripts do PowerShell com privilégios de administrador ou ajustar as políticas de execução (como `Set-ExecutionPolicy RemoteSigned`) se encontrar bloqueios de segurança nos scripts. Não sei por que funciona, mas às vezes executar o PowerShell como administrador ajuda a resolver o problema.

Resumindo, esses comandos não são perfeitos, mas resolvem muito bem os atrasos e pausas comuns em scripts — uma verdadeira mão na roda na hora de automatizar ou depurar no Windows. Espero que isso ajude você a evitar esses becos sem saída irritantes em scripts e mantenha seu fluxo de trabalho mais fluido!

Resumo

  • Utilize Start-Sleep -Seconds Xpara um atraso fixo simples.
  • Use esta opção Timeout /T Xse desejar um atraso que possa ser ignorado.
  • Utilize esta opção Pausepara aguardar manualmente a entrada do usuário antes de prosseguir.

Resumo

Aprender a pausar scripts corretamente no Windows pode evitar muita frustração, principalmente ao automatizar tarefas mais longas. Os comandos aqui apresentados não são os mais sofisticados, mas são confiáveis ​​o suficiente para a maioria das necessidades do dia a dia. Lembre-se apenas de que alguns comandos, como `pause`, sleepnão estão disponíveis nativamente no prompt de comando (cmd), mas o PowerShell resolve esse problema. Esperamos que isso economize algumas horas de trabalho para alguém ou, pelo menos, torne a criação de scripts menos trabalhosa.



Este artigo foi útil?