Creating a Workflow by Using a Windows PowerShell Script
You can create a workflow by writing a Windows PowerShell script. To create a workflow, use the workflow keyword followed by a name for the workflow before the body of the script. For example:
workflow Invoke-HelloWorld {"Hello World from workflow"}
You find the workflow in the same way you would any other Windows PowerShell command.
Implementing Parallel and Sequence
Windows Workflow Foundation supports
execution of activities in parallel. To implement this capability in a Windows PowerShell script,
use the parallel
keyword in front of a script block. You can also use the foreach -parallel
construction to iterate through a collection of objects in parallel. To execute a group of
activities in sequential order within a parallel block, enclose that group of activities in a script
block and precede the block with the sequence keyword.
Joining Computers to a Domain
The following script creates a workflow that checks the domain status of a group of user-specified computers, joins them to a domain if they are not already joined, and then checks the status again. This is a script version of the XAML workflow explained in Creating a Workflow with Windows PowerShell Activities.
workflow Join-Domain
{
param([string[]] $ComputerName, [PSCredential] $DomainCred, [PsCredential] $MachineCred)
foreach -parallel($Computer in $ComputerName)
{
sequence {
Get-WmiObject -PSComputerName $Computer -PSCredential $MachineCred
Add-Computer -PSComputerName $Computer -PSCredential $DomainCred
Restart-Computer -ComputerName $Computer -Credential $MachineCred -For PowerShell -Force -Wait -PSComputerName ""
Get-WmiObject -PSComputerName $Computer -PSCredential $MachineCred
}
}
}