Vstupní parametry:
- siteUrl – URL adresa na web kde se nachází seznam
- listTitle – název seznamu
- workflowName – název workflow (asociace)
- workflowCulture – v jakém jazyce je název WF (default en-US)
- restartIfRunning – pokud WF běží, zastaví se (default je NE, vynechá se zpracování)
Příklad:
.\StartListWorkflowOnAllItems.ps1 -siteUrl http://srvdev:81/ -listTitle „Documents“ -workflowName „Approval WF“ -restartIfRunning $true
StartListWorkflowOnAllItems.ps1 (2,62 kb)
<# .Synopsis Start workflow on all items in list or document library .Example .\StartListWorkflowOnAllItems.ps1 -siteUrl http://srvdev:81/ -listTitle "Documents" -workflowName "Approval WF" -restartIfRunning $true .Notes NAME: StartListWorkflowOnAllItems.ps1 AUTHOR: novotny@devit.cz .Link http://www.devit.cz #> param ( [Parameter(Mandatory=$True)] [string]$siteUrl, [Parameter(Mandatory=$True)] [string]$listTitle, [Parameter(Mandatory=$True)] [string]$workflowName, [string]$workflowNameCulture = "en-US", [boolean]$restartIfRunning = $true ) Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") $web = Get-SPWeb -Identity $siteUrl Write-Host "Opening site '$($web.Title)'" $manager = $web.Site.WorkFlowManager $list = $web.Lists[$listTitle] if ($list -eq $null) { Write-Host "Unable to find list '$listTitle'" -ForegroundColor Red return } $assoc = $list.WorkflowAssociations.GetAssociationByName($workflowName, $workflowNameCulture) if ($assoc -eq $null) { Write-Host "Unable to find WF association '$workflowName' for culture '$workflowNameCulture'" -ForegroundColor Red return } $data = $assoc.AssociationData $items = $list.Items Write-Host "Starting workflows in list '$($list.Title)'" foreach($item in $items) { $itemName = $item.Title if ($item.FileSystemObjectType -eq [Microsoft.SharePoint.SPFileSystemObjectType]::File) { $itemName = $item.File.Name } Write-Host "Starting on ID:$($item.ID) - '$itemName'" try { $runningWf = $null foreach($wf in $item.Workflows) { if ($wf.AssociationId -eq $assoc.Id -and ($workflow.InternalState -ne 'Completed' -and $workflow.InternalState -ne 'Cancelled')) { $runningWf = $wf break } } if ($restartIfRunning -eq $false -and $runningWf -ne $null) { Write-Host " Already Running... Skipping" -ForegroundColor Green continue } if ($runningWf -ne $null) { Write-Host " Stopping existing WF" -ForegroundColor Green [Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($runningWf) } $wf = $manager.StartWorkFlow($item, $assoc, $data, $true) Write-Host " OK" -ForegroundColor Green } catch [System.Exception] { Write-Host " ERROR:" $_ -ForegroundColor Red } } $manager.Dispose() $web.Dispose()