about_Sequence
Short description
Describes the Sequence
keyword that runs selected activities sequentially.
Long description
The Sequence
keyword runs selected workflow activities sequentially. Workflow
activities run in the order that they appear and do not run concurrently. The
Sequence
keyword is only valid in a PowerShell Workflow.
The Sequence
keyword is used in a Parallel
script block to run selected
commands sequentially.
Because workflow activities run sequentially by default, the Sequence
keyword
is only effective in a Parallel
script block. If the Sequence
keyword isn't
included in a Parallel
script block, it's valid but ineffective.
The Sequence
script block lets you run more commands in parallel by allowing
you to run dependent commands sequentially.
Syntax
Workflow using Sequence
workflow <Verb-Noun>
{
Sequence
{
[<Activity>]
[<Activity>]
# ...
}
}
Workflow using Parallel and Sequence
workflow <Verb-Noun>
{
Parallel
{
[<Activity>]
Sequence
{
[<Activity>]
[<Activity>]
# ...
}
}
}
Detailed description
The commands in a Parallel
script block can run concurrently. The order in
which they run is not determined. This feature improves the performance of a
script workflow.
You can use a Sequence
script block to run selected activities sequentially,
even though the activities appear in a Parallel
script block.
The activities in a Sequence
script block run consecutively in the order that
they are listed. An activity in a Sequence
script block starts only after the
previous activity completes.
However, when the Sequence
script block appears in a Parallel
script block,
the order in which the Sequence
script block runs isn't determined. It might
run before, after, or concurrent with other activities in the Parallel
script
block.
For example, the following workflow includes a Parallel
script block that
runs activities that get processes and services on the computer. The Parallel
script block contains a Sequence
script block that gets information from a
file and uses the information as input to a script.
The Get-Process
, Get-Service
, and hotfix-related commands are independent
of each other. The commands can run concurrently or in any order. But, the
command that gets the hotfix information must run before the command that uses
it.
workflow Test-Workflow
{
Parallel
{
Get-Process
Get-Service
Sequence
{
$Hotfix = Get-Content 'D:\HotFixes\Required.txt'
Foreach ($h in $Hotfix) {'D:\Scripts\Verify-Hotfix' -Hotfix $h}
}
}
}