Inicia un trabajo en segundo plano de Windows PowerShell.

Sintaxis

Start-Job [-ScriptBlock] <scriptblock> [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]

Start-Job [[-FilePath] <string>] [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]

Descripción

El cmdlet Start-Job inicia un trabajo en segundo plano de Windows PowerShell en el equipo local.

Un trabajo en segundo plano de Windows PowerShell ejecuta un comando "en segundo plano" sin interactuar con la sesión actual. Cuando se inicia un trabajo en segundo plano, se devuelve inmediatamente un objeto de trabajo, aunque el trabajo tarde un tiempo prolongado en completarse. Puede continuar trabajando en la sesión sin interrupción mientras el trabajo se ejecuta.

El objeto de trabajo contiene información útil sobre el trabajo, pero no contiene los resultados del mismo. Una vez completado el trabajo, se utiliza el cmdlet Receive-Job para obtener sus resultados. Para obtener más información sobre trabajos de segundo plano, vea about_Jobs.

Para ejecutar un trabajo en segundo plano en un equipo remoto, se utiliza el parámetro AsJob que está disponible en muchos cmdlets, o bien el cmdlet Invoke-Command para ejecutar un comando Start-Job en el equipo remoto. Para obtener más información, vea about_Remote_Jobs.

Parámetros

-ArgumentList <Object[]>

Especifica los argumentos (valores de parámetro) para el script especificado por el parámetro FilePath.

Dado que todos los valores que siguen al nombre de parámetro ArgumentList se interpretan como valores de ArgumentList, el parámetro ArgumentList debe ser el último parámetro en el comando.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Authentication <AuthenticationMechanism>

Especifica el mecanismo que se utiliza para autenticar las credenciales del usuario. Los valores válidos son Default, Basic, Credssp, Digest, Kerberos, Negotiate y NegotiateWithImplicitCredential. El valor predeterminado es Default.

La autenticación CredSSP está disponible solo en Windows Vista, Windows Server 2008 y versiones posteriores de Windows.

Para obtener información acerca de los valores de este parámetro, vea la descripción de la enumeración System.Management.Automation.Runspaces.AuthenticationMechanism en MSDN.

PRECAUCIÓN: la autenticación Credential Security Service Provider (CredSSP), en la que las credenciales del usuario pasan a un equipo remoto para su autenticación, está diseñada para los comandos que requieren autenticación en más de un recurso, como acceso a un recurso compartido de red remota. Este mecanismo aumenta el riesgo que supone la operación remota para la seguridad. Si el equipo remoto está en peligro, las credenciales que se le pasen podrán usarse para controlar la sesión de red.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Credential <PSCredential>

Especifica una cuenta de usuario con permiso para realizar esta acción. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como "Usuario01" o "Dominio01\Usuario01", o bien, escriba un objeto PSCredential, como uno del cmdlet Get-Credential.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

Current user

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-FilePath <string>

Ejecuta el script local especificado como un trabajo en segundo plano. Escriba la ruta de acceso y el nombre de archivo del script o canalice una ruta de acceso de script a Start-Job. El script debe residir en el equipo local o en un directorio al que pueda obtener acceso el equipo local.

Cuando se usa este parámetro, Windows PowerShell convierte el contenido del archivo de script especificado en un bloque de script y ejecuta este como un trabajo en segundo plano.

¿Requerido?

false

¿Posición?

1

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-InitializationScript <scriptblock>

Especifica comandos que se ejecutan antes de que se inicie el trabajo. Incluya los comandos entre llaves ({ }) para crear un bloque de script.

Este parámetro se utiliza para preparar la sesión en la que se ejecuta el trabajo. Por ejemplo, se puede utilizar para agregar funciones, complementos y módulos a la sesión.

¿Requerido?

false

¿Posición?

2

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-InputObject <psobject>

Especifica la entrada al comando. Escriba una variable que contenga los objetos o un comando o expresión que genere los objetos.

En el valor del parámetro ScriptBlock, utilice la variable automática $input para representar los objetos de entrada.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

true (ByValue)

¿Aceptar caracteres comodín?

false

-Name <string>

Especifica un nombre simple para el nuevo trabajo. El nombre se puede utilizar para identificar el trabajo en otros cmdlets de trabajo, como Stop-Job.

El nombre simple predeterminado es Job#, donde "#" es un número ordinal que se incrementa para cada trabajo.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

Job<number>

¿Aceptar canalización?

true (ByPropertyName)

¿Aceptar caracteres comodín?

false

-RunAs32

Ejecuta el trabajo en un proceso de 32 bits.

Este parámetro se utiliza para forzar que el trabajo se ejecute en un proceso de 32 bits en un sistema operativo de 64 bits.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

False

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-ScriptBlock <scriptblock>

Especifica los comandos que se han de ejecutar en el trabajo en segundo plano. Incluya los comandos entre llaves ({ }) para crear un bloque de script. Este parámetro es obligatorio.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

System.String

Se puede canalizar una ruta de acceso de archivo a Start-Job.

Salidas

System.Management.Automation.RemotingJob

Start-Job devuelve un objeto que representa el trabajo que ha iniciado.

Notas

Para ejecutarse en segundo plano, Start-Job se ejecuta en su propia sesión dentro de la sesión actual. Cuando se usa el cmdlet Invoke-Command para ejecutar un comando Start-Job en una sesión en un equipo remoto, Start-Job se ejecuta en una sesión dentro de la sesión remota.

Ejemplo 1

C:\PS>start-job -scriptblock {get-process}

C:\PS> start-job -command "get-process"

Id    Name  State    HasMoreData  Location   Command
---   ----  -----    -----------  --------   -------
1     Job1  Running  True         localhost  get-process

Descripción
-----------
Este comando inicia un trabajo en segundo plano que ejecuta un comando Get-Process. El comando devuelve un objeto de trabajo con información sobre el trabajo. El símbolo del sistema se devuelve inmediatamente para poder trabajar en la sesión mientras el trabajo se ejecuta en segundo plano.






Ejemplo 2

C:\PS>$jobWRM = invoke-command -computerName (get-content servers.txt) -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob

Descripción
-----------
Este comando utiliza el cmdlet Invoke-Command y su parámetro AsJob para iniciar un trabajo en segundo plano que ejecuta un comando "get-service winrm" en numerosos equipos. Dado que el comando se ejecuta en un servidor con un tráfico de red importante, el comando utiliza el parámetro ThrottleLimit de Invoke-Command para limitar el número de comandos simultáneos a 16. 

El comando utiliza el parámetro ComputerName para especificar los equipos en que se ejecuta el trabajo. El valor del parámetro ComputerName es un comando Get-Content que obtiene el texto en el archivo Servers.txt, un archivo de nombres de equipo en un dominio. 

El comando utiliza el parámetro ScriptBlock para especificar el comando y el parámetro JobName para especificar un nombre simple para el trabajo.






Ejemplo 3

C:\PS>$j = start-job -scriptblock {get-eventlog -log system} -credential domain01\user01

C:\PS> $j | format-list -property *

HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : get-eventlog -log system
JobStateInfo  : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 2d9d775f-63e0-4d48-b4bc-c05d0e177f34
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :

C:\PS> $j.JobStateInfo.state
Completed

C:\PS> $results = receive-job -job $j

C:\PS> $results
Index Time          Type        Source                EventID Message
----- ----          ----        ------                ------- -------
84366 Feb 18 19:20  Information Service Control M...     7036 The description...
84365 Feb 18 19:16  Information Service Control M...     7036 The description...
84364 Feb 18 19:10  Information Service Control M...     7036 The description...
...

Descripción
-----------
Estos comandos administran un trabajo en segundo plano que obtiene todos los eventos del registro del sistema en el visor de eventos. El trabajo se ejecuta en el equipo local.

El primer comando utiliza el cmdlet Start-Job para iniciar el trabajo. Utiliza el parámetro Credential para especificar la cuenta de usuario de un usuario que tiene permiso para ejecutar el trabajo en el equipo. A continuación, guarda el objeto de trabajo que Start-Job devuelve en la variable $j.

En este momento, puede reanudar la otra tarea mientras el trabajo se completa.

El segundo comando usa un operador de canalización (|) para pasar el objeto de trabajo en $j al cmdlet Format-List. El comando Format-List usa el parámetro Property con el valor * (todo) para mostrar todas las propiedades del objeto de trabajo en una lista.

El tercer comando muestra el valor de la propiedad JobStateInfo. Esta propiedad contiene el estado del trabajo.

El cuarto comando utiliza el cmdlet Receive-Job para obtener los resultados del trabajo. Almacena los resultados en la variable $results.

El último comando muestra el contenido de la variable $results.






Ejemplo 4

C:\PS>start-job -filepath c:\scripts\sample.ps1

Descripción
-----------
Este comando ejecuta el script Sample.ps1 como un trabajo en segundo plano.






Ejemplo 5

C:\PS>start-job -name WinRm -scriptblock {get-process winrm}

Descripción
-----------
Este comando ejecuta un trabajo en segundo plano que obtiene el proceso de WinRM en el equipo local. El comando utiliza el parámetro ScriptBlock para especificar el comando que se ejecuta en el trabajo en segundo plano. Utiliza el parámetro Name para especificar un nombre simple para el nuevo trabajo.






Ejemplo 6

C:\PS>start-job -name GetMappingFiles -initializationScript {import-module MapFunctions} -scriptblock {Get-Map -name * | set-content D:\Maps.tif} -runAs32

Descripción
-----------
Este comando inicia un trabajo que recopila gran cantidad de datos y los guarda en un archivo .tif. El comando utiliza el parámetro InitializationScript para ejecutar un bloque de script que importa un módulo necesario. También utiliza el parámetro RunAs32 para ejecutar el trabajo en un proceso de 32 bits aunque el equipo tenga un sistema operativo de 64 bits.






Vea también




Tabla de contenido