Compartir a través de


Trabajos en segundo plano

Los cmdlets pueden realizar su acción internamente o como un trabajo en segundo plano de Windows PowerShell. Cuando un cmdlet se ejecuta como un trabajo en segundo plano, el trabajo se realiza de forma asincrónica en su propio subproceso independiente del subproceso de canalización que usa el cmdlet. Desde la perspectiva del usuario, cuando un cmdlet se ejecuta como un trabajo en segundo plano, el símbolo del sistema devuelve inmediatamente incluso si el trabajo tarda un período de tiempo prolongado en completarse y el usuario puede continuar sin interrupciones mientras se ejecuta el trabajo.

Trabajos en segundo plano, trabajos secundarios y el repositorio de trabajos

El objeto de trabajo devuelto por los cmdlets que admiten trabajos en segundo plano define el trabajo. (El cmdlet Start-Job también devuelve un objeto de trabajo). El nombre del trabajo, un identificador que se usa para especificar el trabajo, la información de estado y los trabajos secundarios se incluyen en esta definición. El trabajo no realiza ninguno de los trabajos. Cada trabajo en segundo plano tiene al menos un trabajo secundario porque el trabajo secundario realiza el trabajo real. Al ejecutar un cmdlet para que el trabajo se realice como un trabajo en segundo plano, el cmdlet debe agregar el trabajo y los trabajos secundarios a un repositorio común, denominado repositorio de trabajos de .

Para obtener más información sobre cómo se controlan los trabajos en segundo plano en la línea de comandos, consulte lo siguiente:

Escritura de un cmdlet que se ejecuta como un trabajo en segundo plano

Para escribir un cmdlet que se pueda ejecutar como un trabajo en segundo plano, debe completar las siguientes tareas:

  • Defina un parámetro de modificador asJob para que el usuario pueda decidir si debe ejecutar el cmdlet como un trabajo en segundo plano.

  • Cree un objeto que derive de la clase System.Management.Automation.Job. Este objeto puede ser un objeto de trabajo personalizado o un objeto de trabajo proporcionado por Windows PowerShell, como un objeto System.Management.Automation.PSEventJob.

  • En un método de procesamiento de registros, agregue una instrucción if que detecte si el cmdlet debe ejecutarse como un trabajo en segundo plano.

  • Para objetos de trabajo personalizados, implemente la clase de trabajo.

  • Devuelve los objetos adecuados, en función de si el cmdlet se ejecuta como un trabajo en segundo plano.

Para obtener un ejemplo de código, vea Cómo admitir trabajos.

Windows PowerShell proporciona las siguientes API para administrar trabajos en segundo plano.

System.Management.Automation.Job Deriva objetos de trabajo personalizados. Se trata de una clase abstracta.

System.Management.Automation.JobRepository Administra y proporciona información sobre los trabajos en segundo plano activos actuales.

System.Management.Automation.JobState Define el estado del trabajo en segundo plano. Los estados incluyen Started, Running y Stopped.

System.Management.Automation.JobStateInfo Proporciona información sobre el estado de un trabajo en segundo plano y, si el último cambio de estado se produjo por un error, el motivo por el que el trabajo entró en su estado actual.

System.Management.Automation.JobStateEventArgs Proporciona los argumentos de un evento que se genera cuando un trabajo en segundo plano cambia de estado.

Cmdlets de trabajo de Windows PowerShell

Windows PowerShell proporciona los siguientes cmdlets para administrar trabajos en segundo plano.

Get-Job

Obtiene los trabajos en segundo plano de Windows PowerShell que se ejecutan en la sesión actual.

Receive-Job

Obtiene los resultados de los trabajos en segundo plano de Windows PowerShell en la sesión actual.

Remove-Job

Elimina un trabajo en segundo plano de Windows PowerShell.

Start-Job

Inicia un trabajo en segundo plano de Windows PowerShell.

Stop-Job

Detiene un trabajo en segundo plano de Windows PowerShell.

Wait-Job

Suprime el símbolo del sistema hasta que se completen uno o todos los trabajos en segundo plano de Windows PowerShell que se ejecutan en la sesión.

Véase también

escribir un cmdlet de Windows PowerShell