Invoke-AsWorkflow
Ejecuta un comando o 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 flujo de trabajo de Invoke-AsWorkflow
ejecuta cualquier comando o expresión como un script insertado en un flujo de trabajo.
Estos flujos de trabajo usan la semántica de flujo de trabajo estándar, tienen todos los parámetros comunes del flujo de trabajo y tienen todas las ventajas de los flujos de trabajo, incluida la capacidad de detener, reanudar y recuperar.
Los flujos de trabajo están diseñados para comandos de ejecución prolongada que recopilan datos críticos, pero se pueden usar para ejecutar cualquier comando. Para obtener más información, vea 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 presenta 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 cmdlet Get-ExecutionPolicy
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 PSComputerName parámetro común de flujo de trabajo para especificar los equipos en los que se ejecuta el comando.
El valor del parámetro PSComputerName de es un comando Get-Content
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 comando Get-Command
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 cmdlet Import-Csv
para crear un objeto a partir del contenido del archivo Servers.csv. El comando usa el parámetro Header
para crear una propiedad ServerName
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 variable $s
.
El segundo comando usa el flujo de trabajo de Invoke-AsWorkflow
para ejecutar un comando Get-ExecutionPolicy
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 parámetro Parameter
de Invoke-AsWorkflow
para especificar el parámetro Scope
del cmdlet Get-ExecutionPolicy
con un valor de Process. El comando también usa el parámetro común PSConnectionRetryCount
flujo de trabajo para limitar el comando a cinco intentos en cada equipo y el parámetro común de flujo de trabajo PSComputerName
para especificar los nombres de los nodos remotos (equipos de destino). El valor del parámetro PSComputerName
es una expresión que obtiene la propiedad ServerName
de cada objeto de la variable $s
.
Estos comandos ejecutan un comando Get-ExecutionPolicy
como flujo de trabajo en cientos de equipos.
El comando usa el parámetro Scope
del cmdlet Get-ExecutionPolicy
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 flujo de trabajo de Invoke-AsWorkflow
para ejecutar un comando Ipconfig como trabajo de flujo de trabajo en los equipos enumerados en el archivo DomainControllers.txt.
El comando usa el parámetro Expression
para especificar la expresión que se va a ejecutar.
Usa el parámetro común PSComputerName
flujo de trabajo para especificar los nombres de los nodos remotos (equipos de destino).
El comando también usa los parámetros comunes de AsJob
y JobName
flujo de trabajo para ejecutar el flujo de trabajo como trabajo en segundo plano en cada equipo con el nombre del trabajo "Ipconfig".
El comando devuelve un objeto ContainerParentJob
(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 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, incluya 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 parámetro CommandName
.
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.