You are on page 1of 7

TEMA

about_Remote_Jobs
DESCRIPCIN BREVE
Describe cmo se ejecutan los trabajos en segundo plano en equipos remotos.
DESCRIPCIN DETALLADA
Un trabajo en segundo plano es un comando que se ejecuta
asincrnicamente sin interactuar con la sesin actual. El smbolo
del sistema vuelve inmediatamente y se puede continuar usando la
sesin mientras se ejecuta el trabajo.
De forma predeterminada, los trabajos en segundo plano se
ejecutan en el equipo local. No obstante, se pueden usar varios
procedimientos para ejecutar trabajos en segundo plano en equipos
remotos.
En este tema se explica cmo se ejecuta un trabajo en segundo
plano en un equipo remoto. Para obtener informacin sobre cmo se
ejecutan los trabajos en segundo plano en un equipo local, vea
about_Jobs. Para obtener ms informacin sobre los trabajos en
segundo plano, vea about_Job_Details.
TRABAJOS EN SEGUNDO PLANO REMOTOS
Existen tres mtodos para ejecutar trabajos en segundo plano en
equipos remotos.
-- Puede iniciar una sesin interactiva con un equipo remoto e
iniciar un trabajo en la sesin interactiva. Los procedimientos
son los mismos que para la ejecucin de un trabajo local, si bien
todas las acciones se realizan en el equipo remoto.
-- Puede ejecutar un trabajo en segundo plano en un equipo remoto
que devuelve los resultados al equipo local. Utilice este
mtodo si desea recopilar los resultados de los trabajos en
segundo plano y mantenerlos en una ubicacin central en el
equipo local.
-- Puede ejecutar un trabajo en segundo plano en un equipo remoto
que mantiene los resultados en el equipo remoto. Utilice este
mtodo cuando los datos de los trabajos se mantienen con mayor
seguridad en el equipo que los origin.
INICIAR UN TRABAJO EN SEGUNDO PLANO EN UNA SESIN INTERACTIVA
Puede iniciar una sesin interactiva con un equipo remoto y, a
continuacin, iniciar un trabajo en segundo plano durante la
sesin interactiva. Para obtener ms informacin sobre las
sesiones interactivas, vea about_Remote y Enter-PSSession.
El procedimiento para iniciar un trabajo en segundo plano durante
una sesin interactiva es casi idntico al procedimiento para
iniciar un trabajo en segundo plano en un equipo local. Sin
embargo, todas las operaciones se llevan a cabo en el equipo
remoto y no en el equipo local.
PASO 1: ENTER-PSSESSION

Use el cmdlet Enter-PSSession para iniciar una sesin interactiva


con un equipo remoto. Puede utilizar el parmetro ComputerName de
Enter-PSSession a fin de establecer una conexin temporal para la
sesin interactiva. O bien, puede usar el parmetro Session para
ejecutar la sesin interactiva en una sesin de Windows
PowerShell (PSSession).
El siguiente comando inicia una sesin interactiva en el equipo
Servidor01.
C:\PS> Enter-PSSession -computername Servidor01
El smbolo del sistema cambia para indicar que se ha conectado al
equipo Servidor01.
Servidor01\C:>
PASO 2: START-JOB
Utilice el cmdlet Start-Job para iniciar un trabajo en segundo
plano en la sesin.
El comando siguiente ejecuta un trabajo en segundo plano que
obtiene los eventos del registro de eventos de Windows PowerShell
en el equipo Servidor01. El cmdlet Start-Job devuelve un objeto
que representa el trabajo.
Este comando guarda el objeto de trabajo en la variable $job.
Servidor01\C:> $job = start-job -scriptblock {get-eventlog "Windows Powe
rShell"}
Mientras se ejecuta el trabajo, puede utilizar la sesin
interactiva para ejecutar otros comandos, incluidos otros
trabajos en segundo plano. Sin embargo, debe mantener abierta la
sesin interactiva hasta que se complete el trabajo. Si finaliza
la sesin, se interrumpir el trabajo y se perdern los resultados.

PASO 3: GET-JOB
Para comprobar si se ha completado el trabajo, debe mostrar el
valor de la variable $job o utilizar el cmdlet Get-Job para
obtener el trabajo. El comando siguiente usa el cmdlet Get-Job
para mostrar el trabajo.
Servidor01\C:> get-job $job
SessionId Name State
--------- ---- ----1
Job1 Complete
ws PowerShell"

HasMoreData Location
Command
----------- -------- ------True
localhost get-eventlog "Windo

El resultado de Get-Job indica que el trabajo se est ejecutando


en el equipo "localhost" porque se inici y se ejecuta en el
mismo equipo (en este caso, Servidor01).

PASO 4: RECEIVE-JOB
Para obtener los resultados del trabajo, use el cmdlet
Receive-Job. Puede mostrar los resultados en la sesin
interactiva o guardarlos en un archivo ubicado en el equipo
remoto. El comando siguiente obtiene los resultados del trabajo
en la variable $job. El comando utiliza el operador de
redireccin (>) para guardar los resultados del trabajo en el
archivo PsLog.txt ubicado en el equipo Servidor01.
Servidor01\C:> receive-job $job > c:\logs\PsLog.txt

PASO 5: EXIT-PSSESSION
Para finalizar la sesin interactiva, utilice el cmdlet
Exit-PSSession. El smbolo del sistema cambia para indicar que
est de nuevo en la sesin original en el equipo local.
Servidor01\C:> Exit-PSSession
C:\PS>

PASO 6: INVOKE-COMMAND: GET CONTENT


Para ver el contenido del archivo PsLog.txt ubicado en el equipo
Servidor01, inicie otra sesin interactiva o ejecute un comando
remoto. Se recomienda ejecutar este tipo de comando en una
PSSession (conexin persistente) en caso de que desee utilizar
varios comandos para investigar y administrar los datos del
archivo PsLog.txt. Para obtener ms informacin sobre las
PSSessions, vea about_PSSessions.
Los comandos siguientes utilizan el cmdlet New-PSSession para
crear una PSSession que est conectada al equipo Servidor01 y
usan el cmdlet Invoke-Command para ejecutar un comando
Get-Content en la PSSession para ver el contenido del archivo.
C:\PS> $s = new-pssession -computername Servidor01
C:\PS> invoke-command -session $s -scriptblock {get-content c:\logs\pslo
g.txt}

INICIAR UN TRABAJO REMOTO QUE DEVUELVE LOS RESULTADOS AL EQUIPO LOCAL (ASJOB)
Para iniciar un trabajo en segundo plano en un equipo remoto que
devuelve los resultados de los comandos al equipo local, utilice
el parmetro AsJob de un cmdlet, como el cmdlet Invoke-Command.
Cuando se utiliza el parmetro AsJob, el objeto de trabajo se
crea en el equipo local, aunque el trabajo se ejecute en el
equipo remoto. Cuando se completa el trabajo, se devuelven los
resultados al equipo local.

Puede utilizar los cmdlets que contienen el sustantivo Job


(cmdlets Job) para administrar los trabajos creados por los
cmdlets. Muchos de los cmdlets que tienen parmetros AsJob no
utilizan la comunicacin remota de Windows PowerShell, por lo que
puede utilizarlos incluso en los equipos que no estn
configurados para la comunicacin remota y no cumplan los
requisitos referentes a la comunicacin remota.
PASO 1: INVOKE-COMMAND -ASJOB
El comando siguiente utiliza el parmetro AsJob de Invoke-Command
para iniciar un trabajo en segundo plano en el equipo Servidor01.
El trabajo ejecuta un comando Get-Eventlog que obtiene los
eventos del registro del sistema. Puede utilizar el parmetro
JobName si desea asignar un nombre para mostrar al trabajo.
invoke-command -computername Servidor01 -scriptblock {get-eventlog system
} -asjob
Los resultados del comando son similares a los que figuran a continuacin.
SessionId
--------1

Name
---Job1

State
----Running

HasMoreData
----------True

Location
Command
-------------Servidor01 get-eventlog s

ystem
Cuando se utiliza el parmetro AsJob, Invoke-Command devuelve el
mismo tipo de objeto que Start-Job. Puede guardar el objeto de
trabajo en una variable o utilizar un comando Get-Job para
obtener el trabajo.
Observe que el valor de la propiedad Location indica que el
trabajo se ejecut en el equipo Servidor01.
PASO 2: GET-JOB
Para administrar un trabajo que se inici mediante el parmetro
AsJob del cmdlet Invoke-Command, utilice los cmdlet Job. Dado que
el objeto de trabajo que representa el trabajo remoto est en el
equipo local, no es necesario ejecutar comandos remotos para
administrar el trabajo.
Para determinar si el trabajo se ha completado, utilice un
comando Get-Job. El comando siguiente obtiene todos los trabajos
que se iniciaron en la sesin actual.
get-job
Dado que el trabajo remoto se inici en la sesin actual, un
comando Get-Job local obtiene el trabajo. La propiedad State del
objeto de trabajo indica que el comando se ejecut correctamente.
SessionId
--------1
tem

Name
---Job1

State
HasMoreData
--------------Completed True

Location Command
-------- ------Servidor01 get-eventlog sys

PASO 3: RECEIVE-JOB
Para obtener los resultados del trabajo, use el cmdlet
Receive-Job. Dado que los resultados del trabajo se devuelven
automticamente al equipo donde reside el objeto de trabajo,
puede obtener los resultados mediante un comando Receive-Job local.
El comando siguiente utiliza el cmdlet Receive-Job para obtener
los resultados del trabajo. Utiliza el identificador de sesin
para identificar el trabajo. Este comando guarda los resultados
del trabajo en la variable $results. Asimismo, puede redirigir
los resultados a un archivo.
$results = receive-job -id 1

INICIAR UN TRABAJO REMOTO QUE MANTIENE LOS RESULTADOS EN EL EQUIPO REMOTO


Para iniciar un trabajo en segundo plano en un equipo remoto que
mantiene los resultados de los comandos en el equipo remoto,
utilice el cmdlet Invoke-Command para ejecutar un comando
Start-Job en un equipo remoto. Puede utilizar este mtodo para
ejecutar trabajos en segundo plano en varios equipos.
Cuando se ejecuta de forma remota un comando Start-Job, el objeto
de trabajo se crea en el equipo remoto y los resultados del
trabajo se mantienen en el equipo remoto.
Desde el punto de vista del trabajo, todas las operaciones son
locales. Simplemente se ejecutan los comandos de forma remota
para administrar un trabajo local en el equipo remoto.
PASO 1: INVOKE-COMMAND START-JOB
Use el cmdlet Invoke-Command para ejecutar un comando Start-Job
en un equipo remoto.
Este comando requiere una PSSession (conexin persistente). Si
utiliza el parmetro ComputerName de Invoke-Command para
establecer una conexin temporal, se considera que el comando
Invoke-Command se ha completado cuando se devuelve el objeto de
trabajo. Como resultado, se cierra la conexin temporal y se
cancela el trabajo.
El siguiente comando utiliza el cmdlet New-PSSession para crear
una PSSession que est conectada al equipo Servidor01. El comando
guarda la PSSession en la variable $s.
$s = new-pssession -computername Servidor01
El siguiente comando utiliza el cmdlet Invoke-Command para
ejecutar un comando Start-Job en la PSSession. Los comandos
Start-Job y Get-Eventlog estn entre llaves.
invoke-command -session $s -scriptblock {start-job -scriptblock {get-even
tlog system}}

Los resultados son similares a los que figuran a continuacin.


Id
-2

Name
---Job2

State
----Running

HasMoreData
----------True

Location Command
-------- ------Localhost get-eventlog syste

m
Cuando se ejecuta de forma remota un comando Start-Job,
Invoke-Command devuelve el mismo tipo de objeto de trabajo que
Start-Job. Puede guardar el objeto de trabajo en una variable o
utilizar un comando Get-Job para obtener el trabajo.
Observe que el valor de la propiedad Location indica que el
trabajo se ejecut en el equipo local, denominado "LocalHost",
aunque el trabajo se ejecut en el equipo Servidor01. Dado que el
objeto de trabajo se crea en el equipo Servidor01 y el trabajo se
ejecuta en el mismo equipo, se considera que se trata de un
trabajo en segundo plano local.
PASO 2: INVOKE-COMMAND GET-JOB
Para administrar un trabajo en segundo plano remoto, utilice los
cmdlets Job. Dado que el objeto de trabajo est en el equipo
remoto, deber ejecutar comandos remotos para obtener, detener,
aguardar o recuperar los resultados del trabajo.
Para comprobar si se ha completado el trabajo, utilice un comando
Invoke-Command para ejecutar un comando Get-Job en la PSSession
conectada al equipo Servidor01.
invoke-command -session $s -scriptblock {get-job}
El comando devuelve un objeto de trabajo. La propiedad State del
objeto de trabajo indica que el comando se ejecut correctamente.
SessionId
--------2
g system

Name
---Job2

State
HasMoreData
--------------Completed True

Location Command
-------- ------LocalHost get-eventlo

PASO 3: INVOKE-COMMAND RECEIVE-JOB


Para obtener los resultados del trabajo, utilice el cmdlet
Invoke-Command para ejecutar un comando Receive-Job en la
PSSession conectada al equipo Servidor01.
El comando siguiente utiliza el cmdlet Receive-Job para obtener
los resultados del trabajo. Utiliza el identificador de sesin
para identificar el trabajo. Este comando guarda los resultados
del trabajo en la variable $results. Utiliza el parmetro Keep de
Receive-Job para mantener el resultado en la memoria cach de
trabajos del equipo remoto.
$results = invoke-command -session $s -scriptblock {receive-job -session
id 2 -keep}

Tambin puede redirigir los resultados a un archivo en el equipo


local o remoto. El comando siguiente utiliza un operador de
redireccin para guardar los resultados en un archivo ubicado en
el equipo Servidor01.
invoke-command -session $s -command {receive-job -sessionid 2 > c:\logs\
pslog.txt}
VEA TAMBIN
about_Jobs
about_Job_Details
about_Remote
Invoke-Command
Start-Job
Get-Job
Wait-Job
Stop-Job
Remove-Job
New-PSSession
Enter-PSSession
Exit-PSSession

You might also like