Compartir a través de


Invoke-AsWorkflow

Ejecuta un comando o una expresión como un flujo de trabajo de Windows PowerShell.

Sintaxis

Invoke-AsWorkflow
      [-CommandName <String>]
      [-Parameter <Hashtable>]
      [-InputObject <Object>]
      [<CommonParameters>]
Invoke-AsWorkflow
      [-Expression <String>]
      [-InputObject <Object>]
      [<CommonParameters>]

Description

El Invoke-AsWorkflow flujo de trabajo ejecuta cualquier comando o expresión como un script insertado en un flujo de trabajo. Estos flujos de trabajo utilizan la semántica de flujo de trabajo estándar, tienen todos los parámetros comunes de flujo de trabajo y además ofrecen todas sus ventajas, incluida la capacidad de detenerse, reanudarse y recuperar.

Los flujos de trabajo están diseñados para comandos de ejecución prolongada que recopilan datos críticos, pero pueden utilizarse para ejecutar cualquier comando. Para obtener más información, consulte about_Workflows.

También puede agregar parámetros comunes de flujo de trabajo a este comando. Para obtener más información sobre los parámetros comunes del flujo de trabajo, consulte about_WorkflowCommonParameters

Este flujo de trabajo se incorporó en Windows PowerShell 3.0.

Ejemplos

Ejemplo 1: Ejecución de un cmdlet como flujo de trabajo

Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy

PSComputerName                     PSSourceJobInstanceId                   Value
--------------                     ---------------------                   -----
Server01                           77b1cdf8-8226-4662-9067-cd2fa5c3b711    AllSigned
Server02                           a33542d7-3cdd-4339-ab99-0e7cd8e59462    Unrestricted
Server03                           279bac28-066a-4646-9497-8fcdcfe9757e    AllSigned
localhost                          0d858009-2cc4-47a4-a2e0-da17dc2883d0    RemoteSigned

Este comando ejecuta el Get-ExecutionPolicy cmdlet como un flujo de trabajo en cientos de equipos.

El comando usa el parámetro CommandName para especificar el cmdlet que se ejecuta en el flujo de trabajo. Usa el parámetro común de flujo de trabajo PSComputerName para especificar los equipos en los que se ejecuta el comando. El valor del parámetro PSComputerName es un Get-Content comando que obtiene una lista de nombres de equipo del archivo Servers.txt. El valor del parámetro se incluye entre paréntesis para dirigir Windows PowerShell para ejecutar el Get-Command comando antes de usar el valor .

Al igual que con todos los comandos remotos, si el comando se ejecuta en el equipo local (si el valor del parámetro PSComputerName incluye el equipo local), debe iniciar Windows PowerShell con la opción "Ejecutar como administrador".

Ejemplo 2: Ejecución de un cmdlet con parámetros

$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5

El primer comando usa el Import-Csv cmdlet para crear un objeto a partir del contenido del archivo Servers.csv. El comando usa el Header parámetro para crear una ServerName propiedad para la columna que contiene los nombres de los equipos de destino, también conocidos como "nodos remotos". El comando guarda el resultado en la $s variable .

El segundo comando usa el Invoke-AsWorkflow flujo de trabajo para ejecutar un Get-ExecutionPolicy comando en los equipos del archivo Servers.csv. El comando usa el parámetro CommandName de Invoke-AsWorkflow para especificar el comando que se va a ejecutar en el flujo de trabajo. Usa el Parameter parámetro de Invoke-AsWorkflow para especificar el Scope parámetro del Get-ExecutionPolicy cmdlet con un valor de Process. El comando también usa el PSConnectionRetryCount parámetro común de flujo de trabajo para limitar el comando a cinco intentos en cada equipo y el PSComputerName parámetro común de flujo de trabajo para especificar los nombres de los nodos remotos (equipos de destino). El valor del PSComputerName parámetro es una expresión que obtiene la ServerName propiedad de cada objeto de la $s variable.

Estos comandos ejecutan un Get-ExecutionPolicy comando como un flujo de trabajo en cientos de equipos. El comando usa el Scope parámetro del Get-ExecutionPolicy cmdlet con un valor de Process para obtener la directiva de ejecución en la sesión actual.

Ejemplo 3: Ejecución de una expresión como flujo de trabajo

Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig

Id     Name          PSJobTypeName   State         HasMoreData   Location                Command
--     ----          -------------   -----         -----------   --------                -------
2      IpConfig      PSWorkflowJob   Completed     True          Server01, Server01...   Invoke-AsWorkflow

Este comando usa el Invoke-AsWorkflow flujo de trabajo para ejecutar un comando Ipconfig como trabajo de flujo de trabajo en los equipos enumerados en el archivo DomainControllers.txt.

El comando usa el Expression parámetro para especificar la expresión que se va a ejecutar. Usa el PSComputerName parámetro común de flujo de trabajo para especificar los nombres de los nodos remotos (equipos de destino).

El comando también usa los AsJob parámetros comunes del flujo de trabajo y JobName para ejecutar el flujo de trabajo como un trabajo en segundo plano en cada equipo con el nombre del trabajo "Ipconfig".

El comando devuelve un ContainerParentJob objeto (System.Management.Automation.ContainerParentJob) que contiene los trabajos de flujo de trabajo en cada equipo.

Parámetros

-CommandName

Ejecuta el cmdlet especificado o la función avanzada como un flujo de trabajo. Escriba el nombre del cmdlet o de la función, como Update-Help, Set-ExecutionPolicyo Set-NetFirewallRule.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Expression

Especifica la expresión que este cmdlet se ejecuta como un flujo de trabajo. Escriba la expresión como una cadena, como "ipconfig /all". Si la expresión incluye espacios o caracteres especiales, escriba la expresión entre comillas.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Se usa para permitir la entrada de canalización.

Tipo:Object
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Parameter

Especifica los parámetros y los valores de parámetro del comando especificado en el CommandName parámetro . Escriba una tabla hash en la que cada clave es un nombre de parámetro y su valor es el valor del parámetro, como @{ExecutionPolicy="AllSigned"}.

Para obtener información sobre las tablas hash, consulte about_Hash_Tables.

Tipo:Hashtable
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

Object

Puede canalizar cualquier objeto a este cmdlet.

Salidas

None

Este comando no devuelve ninguna salida propia, pero el flujo de trabajo que ejecuta podría devolver la salida.