Welcome to Delicate template
Header
Just another WordPress site
Header

PowerShell Jobs – Basic

mayo 10th, 2013 | Posted by cristiansan in CLI | Microsoft | PowerShell

Los objetivos de automatizar procesos, son los de facilitar tus tareas cotidianas y repetitivas.  Podemos automatizar los procesos de forma que no sea necesario realizar las acciones de forma manual.

PowerShell por eso, tiene un inconveniente en este punto. Cuando se inicia una secuencia de comandos PowerShell, pueden necesitar de un tiempo determinado para su finalización, si además realizamos las tareas sobre maquinas remotas, como vimos en el anterior post “basics”, el tiempo puede aumentar. Su pompt de powerShell no estará disponible hasta la finalización de las mismas. Una forma de solucionar este problema es utilizar varios prompt PowerShell o lanzar los procesos en Background, como Job.

Los trabajos en PowerShell se ejecutan de forma asíncrona. Cabe tener en cuenta, que los resultados no son persistentes, con lo cual, si cerramos una sesión con un Job, los datos del mismo se perderán.

Podemos crear Jobs de dos formas:

Cmdlets Jobs

Cmdlets específicos para la generación de trabajos. Podemos ver un listado con el comando Get-Command .

Get-Command -Name *job* | Format-Wide -Column 3

Veamos como ejecutar un proceso Job con Cmdlets.

Start-Job –name PrimerJob –scriptblock {Get-Service WinRM}

Generamos un segundo Job

Start-Job –name SegundoJob –scriptblock {Get-Service WSService}

Para comprobar los Jobs y su estado, ejecutaremos

Get-job

1

Parametro -AsJob

Algunos cmdlets permiten el parámetro –asjob el cual nos permite ejecutar el mismo como trabajo. Veamos un ejemplo.

Invoke-command –computername vm1 –scriptblock {get-Service WinRm} -asJob

En este caso, es el propio sistema el que nombra el trabajo.

2

En este caso, la maquina VM1 no existe, con lo cual podemos ver el estado “Failed” en su ejecución.

Resultados

Como podemos ver en los dos primeros trabajos, disponemos en la columna HAsMoreData del valor TRUE. Esta columna indica si han sido devueltos resultados.

Este es el momento de poder ver el resultado de la operación. Para ello utilizaremos el comando “receive-Job”.

Receive-Job –name PrimerJob –keep

3

Aquí vemos la salida de Get-Service en la salida del primer Job.  El modificador –keep evita que los datos sean borrados y que podamos accedamos a ellos nuevamente posteriormente.  Recordad, que si cerramos el prompt, los datos se pierden.

Borrar Jobs

Para borrar un Job, basta con obtener el Job deseado con “Get-Job –id X” y redirigir el mismo hacia el cmdlet “Remove-Job”

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

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