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-ExecutionPolicy
o 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
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.