Acerca de los flujos de trabajoAbout Workflows

Descripción breveShort description

Proporciona una breve introducción a la característica de flujo de trabajo de PowerShell.Provides a brief introduction to the PowerShell Workflow feature.

Descripción largaLong description

El flujo de trabajo de PowerShell aporta las ventajas del Windows Workflow Foundation a PowerShell y permite escribir y ejecutar flujos de trabajo.PowerShell Workflow brings the benefits of the Windows Workflow Foundation to PowerShell and enables you to write and run workflows.

El flujo de trabajo de PowerShell se presentó en PowerShell 3,0 y el módulo está disponible hasta PowerShell 5,1.PowerShell Workflow was introduced in PowerShell 3.0 and the module is available up to PowerShell 5.1. Para obtener más información sobre el flujo de trabajo de PowerShell, consulte la Guía de flujos de trabajo y la escritura de un flujo de trabajo de Windows PowerShell.For more information about PowerShell Workflow, see the Workflows Guide and Writing a Windows PowerShell Workflow.

Acerca de los flujos de trabajoAbout workflows

Los flujos de trabajo son comandos que se componen de una secuencia ordenada de actividades relacionadas.Workflows are commands that consist of an ordered sequence of related activities. Normalmente, se ejecutan durante un largo período de tiempo, ya que recopilan datos y realizan cambios en cientos de equipos, a menudo en entornos heterogéneos.Typically, they run for an extended period of time, gathering data from and making changes to hundreds of computers, often in heterogeneous environments.

Los flujos de trabajo se pueden escribir en XAML, el lenguaje usado en Windows Workflow Foundation o en el lenguaje de PowerShell.Workflows can be written in XAML, the language used in Windows Workflow Foundation, or in the PowerShell language. Los flujos de trabajo normalmente se empaquetan en módulos e incluyen temas de ayuda.Workflows are typically packaged in modules and include help topics. Para obtener más información, vea información general sobre XAML (WPF).For more information, see XAML Overview (WPF).

Los flujos de trabajo son fundamentales en un entorno de ti porque pueden sobrevivir a reinicios y recuperarse automáticamente de errores comunes.Workflows are critical in an IT environment because they can survive reboots and recover automatically from common failures. Puede desconectar y volver a conectarse desde sesiones y equipos que ejecutan flujos de trabajo sin interrumpir el procesamiento del flujo de trabajo y suspender y reanudar flujos de trabajo de forma transparente sin pérdida de datos.You can disconnect and reconnect from sessions and computers running workflows without interrupting workflow processing, and suspend and resume workflows transparently without data loss. Cada actividad de un flujo de trabajo se puede registrar y auditar como referencia.Each activity in a workflow can be logged and audited for reference. Los flujos de trabajo se pueden ejecutar como trabajos y se pueden programar mediante la característica de trabajos programados de PowerShell.Workflows can run as jobs and can be scheduled by using the Scheduled Jobs feature of 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 y en los puntos que se especifiquen.The state and data in a workflow is saved or persisted at the beginning and end of the workflow and at points that you specify. Los puntos de persistencia de flujo de trabajo funcionan como instantáneas de base de datos o puntos de control de programa para proteger el flujo de trabajo de los efectos de interrupciones y errores.Workflow persistence points work like database snapshots or program checkpoints to protect the workflow from the effects of interruptions and failures. Si el flujo de trabajo no puede recuperarse de un error, puede usar los datos persistentes y reanudar desde el último punto de persistencia, en lugar de volver a ejecutar un flujo de trabajo extensivo desde el principio.If the workflow is unable to recover from a failure, you can use the persisted data and resume from the last persistence point, instead of rerunning an extensive workflow from the beginning.

Configuración y requisitos de flujo de trabajoWorkflow requirements and configuration

Una configuración de flujo de trabajo de PowerShell consta de los siguientes elementos:A PowerShell Workflow configuration consists of the following elements:

  • Un equipo cliente, que ejecuta el flujo de trabajo.A client computer, which runs the workflow.
  • Una sesión de flujo de trabajo, PSSession , en el equipo cliente o en un equipo remoto.A workflow session, PSSession , on the client computer or on a remote computer.
  • Nodos administrados, los equipos de destino que se ven afectados por las actividades de flujo de trabajo.Managed nodes, the target computers that are affected by the workflow activities.

La sesión de flujo de trabajo no es necesaria, pero se recomienda.The workflow session isn't required, but is recommended. PSSessions puede beneficiarse de las características de recuperación y sesiones desconectadas eficaces de PowerShell para recuperar sesiones de flujo de trabajo desconectadas.PSSessions can take advantage of the robust recovery and Disconnected Sessions features of PowerShell to recover disconnected workflow sessions. Para obtener más información, vea about_Remote_Disconnected_SessionsFor more information, see about_Remote_Disconnected_Sessions

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.Because the client computer and the computer on which the workflow session runs can be managed nodes, you can run a workflow on a single computer that fulfills all roles.

El equipo cliente y el equipo en el que se ejecuta la sesión de flujo de trabajo deben ejecutar PowerShell 3,0.The client computer and the computer on which the workflow session runs must be running PowerShell 3.0. Se admiten todos los sistemas válidos, incluidas las opciones de instalación Server Core de los sistemas operativos Windows Server.All eligible systems are supported, including the Server Core installation options of Windows Server operating systems.

Para ejecutar flujos de trabajo que incluyen cmdlets, los nodos administrados deben tener Windows PowerShell 2,0 o posterior.To run workflows that include cmdlets, the managed nodes must have Windows PowerShell 2.0 or later. Los nodos administrados no requieren PowerShell a menos que el flujo de trabajo incluya cmdlets.Managed nodes don't require PowerShell unless the workflow includes cmdlets. Puede ejecutar flujos de trabajo que incluyen comandos Instrumental de administración de Windows (WMI) y Modelo de información común (CIM) en equipos que no tienen PowerShell.You can run workflows that include Windows Management Instrumentation (WMI) and Common Information Model (CIM) commands on computers that don't have PowerShell.

Cómo obtener flujos de trabajoHow to get workflows

Los flujos de trabajo normalmente se empaquetan en módulos.Workflows are typically packaged in modules. Para importar el módulo que incluye un flujo de trabajo, use cualquier comando del módulo o use el Import-Module cmdlet.To import the module that includes a workflow, use any command in the module or use the Import-Module cmdlet. Los módulos se importan automáticamente en el primer uso de cualquier comando del módulo.Modules are imported automatically on first use of any command in the module.

Para buscar los flujos de trabajo de los módulos instalados en el equipo, use el Get-Command parámetro CommandType del cmdlet.To find the workflows in modules installed on your computer, use the Get-Command cmdlet's CommandType parameter.

Get-Command -CommandType Workflow

Cómo ejecutar flujos de trabajoHow to run workflows

Para ejecutar un flujo de trabajo, utilice el procedimiento siguiente.To run a workflow, use the following procedure.

  1. Cuando el nodo administrado es el equipo local, este paso no es necesario.When the managed node is the local computer, this step isn't required. En caso contrario, en el equipo cliente, inicie PowerShell con la opción Ejecutar como administrador .Otherwise, on the client computer, start PowerShell with the Run as administrator option.

    Start-Process PowerShell -Verb RunAs
    
  2. Habilite la comunicación remota de PowerShell en el equipo que ejecuta la sesión de flujo de trabajo y en los nodos administrados afectados por los flujos de trabajo que incluyen cmdlets.Enable PowerShell remoting on the computer that runs the workflow session and on managed nodes affected by workflows that include cmdlets.

    Solo tiene que realizar este paso una vez en cada equipo participante.You only need to do this step once on each participating computer.

    Este paso solo es necesario cuando se ejecutan flujos de trabajo que incluyen cmdlets.This step is required only when running workflows that include cmdlets. No es necesario habilitar la comunicación remota en el equipo cliente, a menos que la sesión de flujos de trabajo se ejecute en el equipo cliente o en los nodos administrados que ejecutan PowerShell 3,0.You don't need to enable remoting on the client computer, unless the workflows session runs on the client computer, or on any managed nodes that are running PowerShell 3.0.

    Para habilitar la comunicación remota, use el Enable-PSRemoting cmdlet.To enable remoting, use the Enable-PSRemoting cmdlet.

    Enable-PSRemoting -Force
    

    Puede habilitar la comunicación remota mediante la opción Activar directiva de grupo la ejecución de scripts .You can enable remoting by using the Turn on Script Execution Group Policy setting. Para obtener más información, vea about_Group_Policy_Settings y about_Execution_Policies.For more information, see about_Group_Policy_Settings and about_Execution_Policies.

  3. Use los New-PSWorkflowSession New-PSSession cmdlets o para crear la sesión de flujo de trabajo.Use the New-PSWorkflowSession or New-PSSession cmdlets to create the workflow session.

    El New-PSWorkflowSession cmdlet inicia una sesión que usa la configuración de sesión integrada Microsoft. PowerShell. Workflow en el equipo de destino.The New-PSWorkflowSession cmdlet starts a session that uses the built-in Microsoft.PowerShell.Workflow session configuration on the destination computer. Esta configuración de sesión incluye scripts, tipos y archivos de formato, así como opciones que están diseñadas para flujos de trabajo.This session configuration includes scripts, type and formatting files, and options that are designed for workflows.

    O bien, use el New-PSSession cmdlet.Or, use the New-PSSession cmdlet. Use el parámetro ConfigurationName para especificar la configuración de sesión Microsoft. PowerShell. Workflow .Use the ConfigurationName parameter to specify the Microsoft.PowerShell.Workflow session configuration. Este comando es el mismo que el uso del New-PSWorkflowSession cmdlet.This command is the same as using the New-PSWorkflowSession cmdlet.

    Una alternativa es usar el New-PSSession cmdlet.An alternative is to use the New-PSSession cmdlet. Use el parámetro ConfigurationName para especificar la configuración de sesión Microsoft. PowerShell. Workflow .Use the ConfigurationName parameter to specify the Microsoft.PowerShell.Workflow session configuration.

    En el equipo local:On the local computer:

    $ws = New-PSWorkflowSession
    

    En un equipo remoto:On a remote computer:

    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    

    Si es administrador en el equipo de sesión de flujo de trabajo, puede usar el New-PSWorkflowExecutionOption cmdlet para crear una configuración de opción personalizada para la configuración de sesión de flujo de trabajo.If you are an Administrator on the workflow session computer, you can use the New-PSWorkflowExecutionOption cmdlet to create custom option settings for the workflow session configuration. Además, use el Set-PSSessionConfiguration cmdlet para cambiar la configuración de sesión.And, use the Set-PSSessionConfiguration cmdlet to change the session configuration.

    $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
    Invoke-Command -ComputerName Server01 `
    {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
    -SessionTypeOption $Using:sto}
    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    
  4. Ejecute el flujo de trabajo en la sesión de flujo de trabajo.Run the workflow in the workflow session. Para especificar los nombres de los nodos administrados, los equipos de destino, use el parámetro común de flujo de trabajo PSComputerName .To specify the names of the managed nodes, target computers, use the PSComputerName workflow common parameter.

    En los ejemplos siguientes se ejecuta el flujo de trabajo denominado Test-Workflow.The following examples run the workflow named Test-Workflow.

    Donde el nodo administrado es el equipo que hospeda la sesión de flujo de trabajo:Where the managed node is the computer that hosts the workflow session:

    Invoke-Command -Session $ws {Test-Workflow}
    

    Donde los nodos administrados son equipos remotos.Where the managed nodes are remote computers.

    Invoke-Command -Session $ws{
    Test-Workflow -PSComputerName Server01, Server02 }
    

    En el ejemplo siguiente se ejecuta Test-Workflow en cientos de equipos.The following example runs the Test-Workflow on hundreds of computers. El Get-Content cmdlet obtiene los nombres de equipo de un archivo de texto y los guarda en la $Servers variable en el equipo local.The Get-Content cmdlet gets the computer names from a text file and saves them in the $Servers variable on the local computer.

    Invoke-Command usa el $Using modificador de ámbito para definir la $Servers variable en la sesión local.Invoke-Command uses the $Using scope modifier to define the $Servers variable in the local session. Para obtener más información sobre el $Using modificador de ámbito, vea about_Remote_Variables.For more information about the $Using scope modifier, see about_Remote_Variables.

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

Usar parámetros comunes de flujo de trabajoUsing workflow common parameters

Los parámetros comunes de flujo de trabajo son un conjunto de parámetros que PowerShell agrega automáticamente a todos los flujos de trabajo.The workflow common parameters are a set of parameters that PowerShell adds automatically to all workflows. PowerShell agrega los parámetros comunes del cmdlet a todos los flujos de trabajo, incluso si el flujo de trabajo no usa el atributo CmdletBinding .PowerShell adds the cmdlet common parameters to all workflows, even if the workflow doesn't use the CmdletBinding attribute.

Por ejemplo, el siguiente flujo de trabajo no define ningún parámetro.For example, the following workflow defines no parameters. Sin embargo, al ejecutar el flujo de trabajo, tiene tanto CommonParameters como WorkflowCommonParameters.However, when you run the workflow, it has both the CommonParameters and WorkflowCommonParameters.

workflow Test-Workflow {Get-Process}
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.The workflow common parameters include several parameters that are essential to running workflows. Por ejemplo, el parámetro común PSComputerName especifica los nodos administrados a los que afecta el flujo de trabajo.For example, the PSComputerName common parameter specifies the managed nodes that the workflow affects.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02
}

El parámetro común de flujo de trabajo PSPersist determina cuándo se conservan los datos del flujo de trabajo.The PSPersist workflow common parameter determines when workflow data is persisted. Permite agregar un punto de persistencia entre las actividades a los flujos de trabajo que no definen los puntos de persistencia.It enables you to add persistence point between activities to workflows that don't define persistence points.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True
}

Otros parámetros comunes de flujo de trabajo permiten especificar las características de la conexión remota a los nodos administrados.Other workflow common parameters let you specify the characteristics of the remote connection to the managed nodes. Sus nombres y funciones son similares a los parámetros de los cmdlets de comunicación remota, incluido Invoke-Command .Their names and functionality are similar to the parameters of remoting cmdlets, including Invoke-Command.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPort 443
}

Tenga cuidado para 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 prefijo PS que definen la conexión a los nodos administrados.Take care to distinguish the remoting parameters that define the connection for the workflow session from the PS-prefixed workflow common parameters that define the connection to the managed nodes.

$ws = New-PSSession -ComputerName Server01 -ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSConfigurationName Microsoft.PowerShell.Workflow
}

Algunos parámetros comunes de flujo de trabajo son exclusivos de los flujos de trabajo, como el parámetro PSParameterCollection , que permite especificar diferentes valores de parámetros comunes de flujo de trabajo para distintos nodos remotos.Some workflow common parameters are unique to workflows, such as the PSParameterCollection parameter that lets you specify different workflow common parameter values for different remote nodes. Para obtener una lista y una descripción de los parámetros comunes de flujo de trabajo, vea about_WorkflowCommonParameters.For a list and description of the workflow common parameters, see about_WorkflowCommonParameters.

Consulte tambiénSee also

Invoke-AsWorkflowInvoke-AsWorkflow

New-PSSessionNew-PSSession

Cmdlets de PSWorkflowPSWorkflow cmdlets

Guía de flujos de trabajoWorkflows Guide

Escribir un flujo de trabajo de Windows PowerShellWriting a Windows PowerShell Workflow