¿Cómo evito que Windows Powershell se bloquee cuando ejecuto un comando en él? Sé que en Linux puedes agregar & al final de un comando para que puedas seguir usando la terminal sin cerrar ese proceso. ¿Existe algo similar para Windows Powershell?
Respuesta1
¿Cómo evito que Windows Powershell se bloquee cuando ejecuto un comando?
Utilice el Start-Job
cmdlet para iniciar trabajos en segundo plano.
Este es el equivalente de Powershell al uso &
al final de un comando en Unix/Linux.
Trabajos en segundo plano de PowerShell
La forma más sencilla de crear un trabajo en segundo plano de PowerShell es utilizar el
Start-Job
cmdlet. Puede especificar un bloque de script con el cmdlet. Por ejemplo, el siguiente comando ejecuta un bloque de script simple que obtiene los números entre 1 y 50 como trabajo en segundo plano:Start-Job {1..50}
Puede pasar argumentos a un bloque de secuencia de comandos con este comando de una línea:
Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25
O puede ejecutar scripts:
Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential [email protected])
Puede ver los resultados de estos tres comandos a continuación. Ejecuté estos comandos en PowerShell 3.0. Sin embargo, también funcionarán en PowerShell 2.0, aunque no verá la columna PSJobTypeName.
La salida
Start-Job
es un objeto de cola de trabajos. Los cmdlets se utilizan-Job
para administrar trabajos y sus resultados. Puede hacer referencia a trabajos mediante una identificación. En la imagen de arriba, observe cómo los ID de trabajo saltan del 1 al 3 y al 5.
FuenteTrabajos en segundo plano de PowerShell
El enlace anterior proporciona muchos más detalles que cubren los siguientes temas:
Uso del
Get-WMIObject
cmdlet para crear trabajos en segundo planoUso del
Invoke-Command
cmdlet para crear trabajos en segundo planoGestión de trabajos en segundo plano
Recuperar resultados del trabajo
Detener y esperar trabajos
Otras lecturas
Respuesta2
Como alternativa a Jobs puedes usarEspacios de ejecución: proporcionan mayor rendimiento y menos gastos generales para ejecutar comandos en segundo plano.
Implementaciones: