@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Curso básico de Powershell: Trabajos

Una de las características de PowerShell es que solo un comando se puede estar ejecutando en cada momento, de forma que si tenemos procesos que tardan en finalizar, tenemos que esperar para poder seguir la ejecución de los siguientes. Para poder evitar este problema, tenemos la opción de los Trabajos en segundo plano de PowerShell. Un trabajo es un proceso que se ejecuta en segundo plano de forma que no bloquea la ejecución de otras tareas, y podemos acceder a los resultados del trabajo cuando queramos.

Las características principales de los Trabajos son:

  • Los trabajos consisten en un Trabajo Padre y uno o varios Trabajos Hijo
  • El Trabajo Padre coordina los Trabajos Hijo
  • Normalmente ejecutamos los cmdlet en el Trabajo Padre

Crear un trabajo

Para crear un trabajo tenemos dos opciones:

  • Cmdlet: Start-Job:
    • Normalmente utilizado para acceder a recursos locales
    • Permite ejecutar un bloque de comandos o un script
    • Permite darle un nombre al Trabajo
    • Permite pasar un listado de argumentos
    • Permite inicializar el entorno, por ejemplo, importando un módulo
  • Parámetro: -AsJob
    • Utilizado principalmente para accesos a recursos remotos
    • No se puede establecer el nombre del Trabajo
    • Se utiliza principalmente con los cmdlet
      • Invoke-Command
      • Get-VMIObject
      • Invoke-WMIMethod
      • Restart-Computer

Ejemplo: Si queremos obtener un listado de todos los archivos de una unidad con el comando Get-ChildItem puede tardar varios segundos o incluso minutos en terminar de ejecutarse. Podemos probarlo

Sesión bloqueada a la espera de que termine el comando
Sesión bloqueada a la espera de que termine el comando

Y mientras está en ejecución no podemos realizar ninguna tarea en el mismo entorno PowerShell

Para facilitar el trabajo vamos a crear el comando anterior como un Trabajo

Creamos el trabajo
Creamos el trabajo

Vemos que se ha creado un trabajo con el identificador 6, el nombre ListadoCompleto.

Gestionando los Trabajos

En el punto anterior hemos creado un trabajo pero no tenemos control sobre él, no podemos saber cuando va a terminar, ni nos va a avisar cuando lo haga, ni sabemos como pararlo si es necesario.

Para esto tenemos varios cmdlets:

  • Get-Job: como todo en PowerSehll, un trabajo también es un objeto y lo podemos obtener con este comando. Para obtener el comando podemos utilizar varias de las propiedades del trabajo: Id, Nombre, Estado, Fecha…
Ejemplos de Get-Job
Ejemplos de Get-Job
  • Wait-Job: permanece a la espera hasta que un trabajo termina. Podemos utilizar los propiedades como en Get-Job para identificar el trabajo.
Wait-job
Wait-job
  • Stop-Job: nos permite terminar un trabajo, normalmente si hay algún problema con él.
Stop-Job
Stop-Job
  • Remove-Job: permite eliminar un trabajo, ya que aunque un trabajo se haya completado sigue existiendo hasta que terminemos la sesión de PowerShell. Antes de eliminarlo es necesario parar el trabajo.
Remove-Job
Remove-Job

Obtener resultados

Para obtener los resultados de la ejecución del trabajo se utiliza Receive-Job. Cuando lo utilizamos, por defecto, se elimina el resultado del trabajo, aunque esté siga existiendo, salvo que lo indiquemos con el parámetro -Keep

Obteniendo los resultados del trabajo
Obteniendo los resultados del trabajo

Estado de los Trabajo

Los trabajos pueden estar en varios estados

  • Running
  • Stopped
  • Completed
  • Failed

Si un Trabajo ha fallado, podemos acceder a la propiedad JobStateInfo, que nos suele mostrar información del error que se ha producido

¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Roberto Orayen

Compruebe también

powershell-comandos-para-extraer-hardware-1

Powershell: Comandos para extraer hardware

Powershell: Comandos para extraer hardware Empezamos el año 2024 con un poco de “comandeo”… Hoy …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

1 × 5 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu