Cómo pausar PowerShell (pautas paso a paso) - 3 - octubre 7, 2022

Cómo pausar PowerShell (pautas paso a paso)

Es posible que esté tratando de escribir una secuencia de comandos que requiera la entrada del usuario para completarse o, a veces, la secuencia de comandos requiere un retraso para permitir que otro proceso termine de ejecutarse primero.

Cómo pausar PowerShell (pautas paso a paso) - 5 - octubre 7, 2022

El comando más utilizado para propósitos como este es el cmdlet Start-Sleep . Dado que PowerShell también admite comandos CMD, también puede usar los comandos Pause Y Timeout De espera.

En este artículo, explicamos el uso de estos y más comandos para pausar en Powershell.

Cómo pausar PowerShell

Puede usar los siguientes métodos para hacer una pausa en PowerShell. Como hemos incluido métodos nativos y no nativos, puede usarlos según corresponda.

Inicio-Sueño

El propósito del cmdlet Start-Sleep Es suspender la actividad en un script o sesión durante un período de tiempo específico. Puede usarlo con los parámetros -Seconds Y -Milliseconds, como se muestra en los ejemplos a continuación.

Para suspender la actividad durante 5 segundos
Start-Sleep -Seconds 5

Cómo pausar PowerShell (pautas paso a paso) - 7 - octubre 7, 2022

Para suspender la actividad durante 200 milisegundos
Start-Sleep -Milliseconds 200

Para suspender la actividad durante 4,3 segundos, puede usar cualquiera de los siguientes:
Start-Sleep -Seconds 4.3
Start-Sleep -Milliseconds 4300
Start-Sleep -Seconds 4 -Milliseconds 300

También puede utilizar los alias de PowerShell integrados. Puede usar sleep y -s en lugar de Start-Sleep Y -Seconds Respectivamente. Entonces, el comando anterior se puede escribir como:
Sleep -s 4.3

Cómo pausar PowerShell (pautas paso a paso) - 9 - octubre 7, 2022

Finalmente, puede presionar CTRL + C para salir de Start-Sleep .

Host de lectura

El propósito del cmdlet Read-Host Es leer alguna entrada de la consola y, al hacerlo, detiene el script. Normalmente se usa para solicitar al usuario que ingrese datos como contraseñas, nombres de usuario, etc.

Por ejemplo, el siguiente comando solicita al usuario que ingrese su nombre y la entrada se guarda en la variable $Name.
$Name = Read-Host "Enter Your Name"

Cómo pausar PowerShell (pautas paso a paso) - 11 - octubre 7, 2022

Si usa esto para solicitar al usuario su contraseña, es posible que desee agregar los parámetros -AsSecureString O -MaskInput Al final para mostrar asteriscos en lugar de la contraseña.

Consola.ReadKey

El método Console.ReadKey() A menudo se usa para pausar la ejecución del programa hasta que el usuario presiona una tecla. Por ejemplo, si está tratando de pausar el programa hasta que el usuario presione Enter, lo usaría como tal:
Console.ReadKey().Key != ConsoleKey.Enter

Cómo pausar PowerShell (pautas paso a paso) - 13 - octubre 7, 2022

RawUI.ReadKey

El método RawUI.ReadKey Es similar al método Console ReadKey, excepto que puede usar algunas opciones más con este método. Estas opciones son:

AllowCtrlC Permite que CTRL + C se procese como una pulsación de tecla en lugar de provocar un evento de interrupción.
IncludeKeyDown Incluye eventos de pulsación de tecla (activados cuando se pulsa una tecla).
IncludeKeyUp Incluye eventos de pulsación de tecla (activados cuando el usuario suelta una tecla en el teclado).
NoEcho No muestra el carácter de la tecla en la ventana cuando se presiona.

Tenga en cuenta que se debe incluir uno de IncluirTeclaAbajo o IncluirTeclaArriba, o ambos. Dicho esto, puede usar este método con las opciones como tales:
$host.UI.RawUI.ReadKey(AllowCtrlC,IncludeKeyDown')

Cómo pausar PowerShell (pautas paso a paso) - 15 - octubre 7, 2022

Subproceso.Sueño

El método Thread.Sleep Suspende el subproceso actual durante un período de tiempo específico. Puede usar este método con un argumento milisegundosTiempo de espera o un objeto TimeSpan, como se muestra a continuación.

En el siguiente ejemplo, el hilo actual se detiene durante 3,5 segundos.
[System.Threading.Thread].Sleep(3500)

Cómo pausar PowerShell (pautas paso a paso) - 17 - octubre 7, 2022

Alternativamente, puede ingresar el valor en forma de Días, Horas, Minutos, Segundos y Milisegundos como se muestra a continuación:
[System.Threading.Thread].Sleep([TimeSpan]::New(0, 0, 0, 3, 500))

Establecer-PSBreakPoint

El cmdlet Set-PSBreakpoint Se usa para depurar scripts de PowerShell. Se usa para establecer puntos de interrupción donde PowerShell deja de ejecutarse temporalmente y entrega el control al depurador.

Cómo pausar PowerShell (pautas paso a paso) - 19 - octubre 7, 2022

Puede establecer tres tipos de puntos de interrupción con este cmdlet; Punto de interrupción de línea, Punto de interrupción de comando y Punto de interrupción variable. Los casos de uso para esto son innumerables, por lo que recomendamos consultar la documentación de Microsofts Set-PSBreakPoint para obtener más detalles.

Trabajo en espera

Puede usar el cmdlet Wait-Job Para esperar a que un trabajo específico o todos los trabajos estén en un estado de finalización (completado, fallido, detenido, suspendido o desconectado) antes de continuar con la ejecución.

En el siguiente ejemplo, el cmdlet pausará el script de PowerShell hasta que Job1 esté en un estado de finalización.
Wait-Job -Name "Job1"

Para hacer lo mismo para todos los trabajos, puede usar:
Get-Job | Wait-Job

Cómo pausar PowerShell (pautas paso a paso) - 21 - octubre 7, 2022

También puede usar el -Timeout Para especificar en segundos cuánto tiempo debe esperar a que finalice el trabajo antes de que se agote el tiempo de espera y la secuencia de comandos continúe ejecutándose.

Más

En caso de que esté ejecutando un comando o secuencia de comandos que muestre una gran cantidad de resultados, puede usar el comando More Para hacer una pausa después de que se muestre una pantalla de resultados.

Por ejemplo, para ver la primera pantalla de información de un archivo llamado Testfile.new, podría usar:
More < testfile.new

También puede canalizar a More Como tal:
Type testfile.new | more

Cómo pausar PowerShell (pautas paso a paso) - 23 - octubre 7, 2022

Comandos de pausa y tiempo de espera

Vale la pena mencionar que si desea usar comandos CMD en lugar de cmdlets de Powershell, puede usar los comandos de Pause Y Timeout De espera, ya que son compatibles con Powershell.

Si solo agrega el comando de Pause A su secuencia de comandos, recibirá el siguiente mensaje o uno similar cuando se ejecute:
Presione Entrar para continuar

Cómo pausar PowerShell (pautas paso a paso) - 25 - octubre 7, 2022

Puede usar el tiempo de Timeout En su lugar si desea especificar la cantidad de tiempo (en segundos) para hacer una pausa antes de que la sesión continúe como tal:
Timeout /t 7

En ocasiones, los usuarios pueden presionar involuntariamente una tecla que terminaría abruptamente el tiempo de espera. Si prefiere ignorar tales pulsaciones de teclas, puede usar el /nobreak Como tal:
Timeout /t 7 /nobreak

Cómo pausar PowerShell (pautas paso a paso) - 27 - octubre 7, 2022

Preguntas frecuentes

¿Cómo hacer una pausa en PowerShell hasta que se presione una tecla?

Puede utilizar los métodos ReadKey O el comando Timeout Para hacer una pausa hasta que se registre una pulsación de tecla. Los detalles con respecto a estos se mencionan en el artículo anterior.

¿Cómo pausar PowerShell durante X segundos?

Start-Sleep Es el cmdlet nativo de PowerShell que se usa para pausar una sesión de PowerShell durante la cantidad de segundos especificada. Alternativamente, también puede usar el comando de Timeout De espera.

¿Cómo hacer una pausa en PowerShell antes de salir?

Console.ReadKey() Se usa comúnmente para pausar Powershell y mostrar un mensaje como Presione Entrar para salir. Cuando el usuario presione enter, el programa saldrá.

¿Cómo pausar la pantalla de salida de PowerShell?

Puede usar el comando More Para pausar la pantalla de salida en PowerShell. Hemos incluido más detalles sobre esto en el artículo anterior.

¿Cómo hacer una pausa de PowerShell para la entrada?

Esto depende del tipo exacto de entrada, pero el cmdlet Read-Host Se usa con mayor frecuencia para este propósito. Aunque se podría argumentar que los métodos Set-PSBreakPoint Y ReadKey También conducen a ciertas formas de entrada.