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.
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.
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
}
}
}