about_Workflows

Se aplica a: Windows PowerShell 3.0

TEMA

about_Workflows

DESCRIPCIÓN BREVE

Proporciona una breve introducción a la característica Flujo de trabajo de Windows PowerShell®.

DESCRIPCIÓN LARGA

El flujo de trabajo de Windows PowerShell ofrece las ventajas de Windows Workflow Foundation a Windows PowerShell para que pueda escribir y ejecutar flujos de trabajo en Windows PowerShell.

El flujo de trabajo de Windows PowerShell se introdujo en Windows PowerShell 3.0.

Para obtener información detallada sobre el flujo de trabajo de Windows PowerShell, consulte "Introducción al flujo de trabajo de Windows PowerShell" en la biblioteca de TechNet (https://go.microsoft.com/fwlink/?LinkID=252592) y "Escribir un flujo de trabajo de Windows PowerShell" en MSDN Library (https://go.microsoft.com/fwlink/?LinkID=246399).

ACERCA DE LOS FLUJOS DE TRABAJO

Los flujos de trabajo son comandos que constan de una secuencia ordenada de actividades relacionadas. Normalmente, se ejecutan durante un intervalo de tiempo prolongado, en el que recopilan datos y efectúan cambios en cientos de equipos, a menudo en entornos heterogéneos.

Los flujos de trabajo se pueden escribir en XAML, el lenguaje que se emplea en Windows Workflow Foundation, o en el lenguaje de Windows PowerShell. Los flujos de trabajo acostumbran a empaquetarse en módulos y contienen temas de ayuda.

Los flujos de trabajo son esenciales en un entorno de TI, ya que pueden sobrevivir a reinicios y se pueden recuperar automáticamente de errores comunes. Puede desconectarse y volver a conectarse a las sesiones y los equipos que ejecutan los flujos de trabajo sin interrumpir el procesamiento del flujo de trabajo, así como suspender y reanudar los flujos de trabajo de forma transparente sin ninguna pérdida de datos. Todas las actividades de un flujo de trabajo se pueden registrar y auditar como referencia. Los flujos de trabajo se pueden ejecutar como trabajos y se pueden programar mediante la característica Trabajos programados de Windows PowerShell.

El estado y los datos de un flujo de trabajo se guardan o se "conservan" al principio y al final del flujo de trabajo, así como en los puntos que especifique. Los puntos de persistencia de flujo de trabajo funcionan como instantáneas de base de datos o puntos de comprobación del programa para proteger el flujo de trabajo de los efectos de las interrupciones y los errores. En el caso de producirse un error del que el flujo de trabajo no pueda recuperarse, puede usar los datos persistentes y reanudar el flujo desde el último punto de persistencia, en lugar de volver a ejecutar un flujo de trabajo extenso desde el principio.

REQUISITOS Y CONFIGURACIÓN

Una configuración del flujo de trabajo de Windows PowerShell consta de los siguientes elementos.

Un equipo cliente, que ejecuta el flujo de trabajo.

Una sesión de flujo de trabajo (PSSession) en el equipo cliente o en un equipo remoto.

Nodos administrados, los equipos de destino que se ven afectados por las actividades del flujo de trabajo.

NOTA:

La sesión de flujo de trabajo no es necesaria, pero se recomienda su uso. Las PSSessions pueden aprovechar las ventajas de la recuperación sólida y de las características de las sesiones desconectadas de Windows PowerShell para recuperar las sesiones desconectadas del flujo de trabajo.

Dado que el equipo cliente y el equipo en el que se ejecuta la sesión de flujo de trabajo pueden ser nodos administrados, puede ejecutar un flujo de trabajo en un único equipo que cumpla todos los roles.

El equipo cliente y el equipo en el que se ejecuta la sesión de flujo de trabajo deben ejecutar Windows PowerShell 3.0. Se admiten todos los sistemas aptos, incluidas las opciones de instalación de Server Core de los sistemas operativos Windows Server.

Para ejecutar flujos de trabajo que incluyan cmdlets, los nodos administrados deben tener Windows PowerShell 2.0 o posterior. Los nodos administrados no requieren Windows PowerShell a menos que el flujo de trabajo incluya cmdlets. Puede ejecutar flujos de trabajo que incluyan comandos de Instrumental de administración de Windows (WMI) y del Modelo de información común (CIM) en los equipos que no tengan Windows PowerShell.

Para más información sobre los requisitos del sistema y la configuración, consulte "Introducción al flujo de trabajo de Windows PowerShell" en la biblioteca de TechNet (https://go.microsoft.com/fwlink/?LinkID=252592).

CÓMO OBTENER FLUJOS DE TRABAJO

Normalmente, los flujos de trabajo se empaquetan en módulos. Para importar el módulo que contiene un flujo de trabajo, use los comandos del módulo o los cmdlets Import-Module. Los módulos se importan automáticamente al usar los comandos del módulo por primera vez.

Para buscar los flujos de trabajo en los módulos instalados en el equipo, use el parámetro CommandType del cmdlet Get-Command.

      PS C:\> Get-Command -CommandType Workflow

CÓMO EJECUTAR FLUJOS DE TRABAJO

Para ejecutar un flujo de trabajo, use el siguiente procedimiento.

1. En el equipo cliente, inicie Windows PowerShell con la opción Ejecutar como administrador.

            PS C:\> Start-Process PowerShell -Verb RunAs

Este paso no es necesario si el nodo administrado es el equipo local.

2. Habilite la comunicación remota de Windows PowerShell en el equipo en el que se ejecuta la sesión de flujo de trabajo y en los nodos administrados afectados por los flujos de trabajo que incluyan cmdlets.

Debe llevar a cabo este paso únicamente una vez en cada equipo participante.

Este paso es necesario solo al ejecutar flujos de trabajo que incluyan cmdlets. No es necesario habilitar la comunicación remota en el equipo cliente (a menos que la sesión de flujo de trabajo se ejecute en el equipo cliente) ni en ningún nodo administrado que ejecute Windows PowerShell 3.0.

Use el cmdlet Enable-PSRemoting para habilitar la comunicación remota.

            PS C:\> Enable-PSRemoting -Force

También puede habilitar la comunicación remota mediante la configuración de directiva de grupo "Activar la ejecución de scripts". Para más información, consulte about_Group_Policy_Settings (https://go.microsoft.com/fwlink/?LinkID=251696) y about_Execution_Policies (https://go.microsoft.com/fwlink/?LinkID=135170).

3. Cree la sesión de flujo de trabajo. Use el cmdlet New-PSWorkflowSession o New-PSSession.

El cmdlet New-PSWorkflowSession inicia una sesión que usa la configuración de sesión integrada Microsoft.PowerShell.Workflow en el equipo de destino. Esta configuración de sesión incluye scripts, archivos de tipo y de formato, así como opciones diseñadas para los flujos de trabajo.

En el equipo local:

            PS C:\> $ws = New-PSWorkflowSession

En un equipo remoto:

            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01

También puede usar el cmdlet New-PSSession. Use el parámetro ConfigurationName para especificar la configuración de sesión Microsoft.PowerShell.Workflow. Este comando equivale a usar el cmdlet New-PSWorkflowSession.

Si es miembro del grupo Administradores en el equipo de la sesión del flujo de trabajo, también puede usar el cmdlet New-PSWorkflowExecutionOption para crear una configuración de opciones personalizadas para la configuración de sesión de flujo de trabajo y usar el cmdlet Set-PSSessionConfiguration para cambiar la configuración de sesión.

            PS C:\> $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
            PS C:\> Invoke-Command -ComputerName Server01 `
                     {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
                      -SessionTypeOption $Using:sto}
            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01          

4. Ejecute el flujo de trabajo en la sesión de flujo de trabajo. Para especificar el nombre de los nodos administrados (equipos de destino), use el parámetro común de flujo de trabajo PSComputerName.

Los siguientes comandos ejecutan el flujo de trabajo Test-Workflow.

Donde el nodo administrado es el equipo que hospeda:

la sesión de flujo de trabajo:

            PS C:\> Invoke-Command -Session $ws {Test-Workflow}

Donde los nodos administrados son equipos remotos.

            PS C:\> Invoke-Command -Session $ws{
                       Test-Workflow -PSComputerName Server01, Server02 }

Los siguientes comandos ejecutan el flujo de trabajo Test-Workflow en cientos de equipos. El primer comando obtiene de un archivo de texto el nombre de los equipos y los guarda en la variable $Servers en el equipo local.

El segundo comando usa el modificador de ámbito de uso para indicar que la variable $Servers está definida en la sesión local.

            PS C:\> $Servers = Get-Content Servers.txt
            PS C:\> Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }

Para más información sobre el modificador de ámbito Using, consulte about_Remote_Variables en https://go.microsoft.com/fwlink/?LinkID=252653

USAR PARÁMETROS COMUNES DE FLUJO DE TRABAJO

Los parámetros comunes de flujo de trabajo son un conjunto de parámetros que Windows PowerShell agrega automáticamente a todos los flujos de trabajo. Windows PowerShell también agrega los parámetros comunes de los cmdlets a todos los flujos de trabajo, aunque estos no usen el atributo CmdletBinding.

Como ejemplo, a continuación se muestra un flujo de trabajo muy sencillo que no define ningún parámetro. Sin embargo, al ejecutar el flujo de trabajo, tiene tanto el parámetro CommonParameters como el parámetro WorkflowCommonParameters.

      PS C:\> workflow Test-Workflow {Get-Process}
      PS C:\> Get-Command Test-Workflow -Syntax
      Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

Los parámetros comunes de flujo de trabajo incluyen varios parámetros que son esenciales para ejecutar flujos de trabajo. Por ejemplo, el parámetro común PSComputerName especifica los nodos administrados a los que afecta el flujo de trabajo.

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02}

El parámetro común de flujo de trabajo PSPersist determina el momento en que se persisten los datos de flujo de trabajo. Le permite agregar un punto de persistencia entre las actividades a los flujos de trabajo que no definen puntos de persistencia.

     PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}

Hay otros parámetros comunes de flujo de trabajo que le permiten especificar las características de la conexión remota con los nodos administrados. Sus nombres y su funcionalidad son muy similares a los parámetros de los cmdlets de la comunicación remota, como Invoke-Command.

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}

Tenga cuidado a la hora de distinguir los parámetros de comunicación remota que definen la conexión para la sesión de flujo de trabajo de los parámetros comunes de flujo de trabajo con el prefijo PS que definen la conexión con los nodos administrados.

      PS C:\> $ws = New-PSSession -ComputerName Server01 `
              -ConfigurationName Microsoft.PowerShell.Workflow
      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 `
              -PSConfigurationName Microsoft.PowerShell.Workflow}

Algunos parámetros comunes de flujo de trabajo son únicos para los flujos de trabajo, como el parámetro PSParameterCollection, que le permite especificar distintos valores de parámetros comunes de flujo de trabajo para diferentes nodos remotos.

Para obtener una lista y una descripción de los parámetros comunes del flujo de trabajo, consulte about_WorkflowCommonParameters en https://go.microsoft.com/fwlink/?LinkID=222527.

VEA TAMBIÉN

Invoke-AsWorkflow

New-PSSessionExecutionOption

New-PSWorkflowSession

about_WorkflowCommonParameters

"Introducción al flujo de trabajo de Windows PowerShell"

(https://go.microsoft.com/fwlink/?LinkID=252592)

"Escribir un flujo de trabajo de Windows PowerShell"

(https://go.microsoft.com/fwlink/?LinkID=246399)