Nintex Workflow – Start Workflow with PowerShell
Starting a workflow via PowerShell can be a useful function and can speed up a lot of work. I’ve created a couple of scripts to help out.
The first one is a script to start a SharePoint workflow, using the SharePoint object model.
The second one is a script to start a Nintex Workflow, using a call to the Nintex Workflow web service.
Let’s start with whether you want a SharePoint Workflow or a Nintex Workflow?
SharePoint Workflow
# .\SPStartWorkflow.ps1 -siteurl url -nwlogin domain\username -nwpassword password -nwworkflow "workflowname" -list "listname" -itemid id
Param(
    [parameter(Mandatory=$true)]
    [alias("siteurl")]
    $url,
    [parameter(Mandatory=$true)]
    [alias("nwlogin")]
    $login,
    [alias("nwpassword")]
    $password,
    [alias("nwworkflow")]
    $workflowname,
    [alias("list")]
    $listname,
    [alias("itemid")]
    $listitemid)
try
{
  Start-SPAssignment -global;
  $web = Get-SPWeb $url;
  $site = $web.Site;
  $workflowManager = $site.WorkFlowManager;
  $list = $web.Lists[$listname];
  $item = $list.GetItemById($listitemid);
  $association=$list.WorkFlowAssociations | where {$_.Name -eq $workflowname};
  $data=$association.AssociationData;
 
  echo 'Starting workflow...';
  $wf=$workflowManager.StartWorkFlow($item,$association,$data);
  echo 'Workflow started...';
  Stop-SPAssignment -global;
            
}
catch
{
  echo $_;
}
Nintex Workflow
# .\NWStartWorkflow.ps1 -siteurl url -nwlogin domain\username -nwpassword password -nwworkflow "workflowname" -list "listname" -itemid id
            Param(
                [parameter(Mandatory=$true)]
                [alias("siteurl")]
                $url,
                [parameter(Mandatory=$true)]
                [alias("nwlogin")]
                $login,
                [alias("nwpassword")]
                $password,
                [alias("nwworkflow")]
                $workflowname,
                [alias("list")]
                $listname,
                [alias("itemid")]
                $listitemid)
            try
            {
              [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
              $webserviceurl = $url + '/_vti_bin/NintexWorkflow/Workflow.asmx';
              $secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
              $credential = New-Object System.Management.Automation.PSCredential($login,$secpasswd);
              $webserviceurl = $webserviceurl
              $page = New-WebServiceProxy -Uri $webserviceurl -Credential $credential;
              $exportedworkflow = $page.StartWorkflowOnListItem($listitemid,$listname,$workflowname,'');
            }
            catch
            {
              echo $_;
            }
$page.Url = $webserviceurl;
Conclusion
Let me know if there are any additions that you feel would make these scripts better.
Downloads
PowerShell Start SharePoint Designer Workflow: Download PowerShell Script
PowerShell Start Nintex Workflow: Download PowerShell Script