Есть несколько руководств по how to work with 2010 workflows using powershell. Может ли кто-нибудь указать мне, как сделать то же самое с рабочими процессами 2013 года? Они больше не указаны внутри $list.WorkFlowAssociations
.Как начать рабочий процесс 2013 из powershell
2
A
ответ
4
$siteURL = "URL"
$web = Get-SPWeb $siteURL
$wfm = New-object Microsoft.SharePoint.WorkflowServices.WorkflowServicesManager($web)
$sub = $wfm.GetWorkflowSubscriptionService()
$subscriptions = $sub.EnumerateSubscriptionsByList($list.ID)
Внутри подписки $ есть соответствующий рабочий процесс. Надеюсь, это поможет.
4
Это MSDN blog post показывает большую часть ответа, но они пытались выполнить итерацию по списку вместо элементов в списке. Ниже приведена обновленная версия.
$sourceWebURL = '<URL>'
$sourceListName = '<List Name>'
$TargetWorkflow = '<Workflow Name>'
$spSourceWeb = Get-SPWeb $sourceWebURL
$spSourceList = $spSourceWeb.Lists[$sourceListName]
$items = $spSourceList.getItems()
#-- Getting a Workflow manager object to work with.
$wfm = New-object Microsoft.SharePoint.WorkflowServices.WorkflowServicesManager($spSourceweb)
#-- Getting the subscriptions
$sub = $wfm.GetWorkflowSubscriptionService()
#-- Getting the specific workflow within the list of subscriptions on the specific list. (SP2010 associated workflows basically)
$WF = $sub.EnumerateSubscriptionsByList($spSourcelist.ID) | Where-Object {$_.Name -eq "$TargetWorkflow"}
#-- Getting a Workflow instance in order to perform my commands.
$wfis=$wfm.GetWorkflowInstanceService()
Foreach($item in $items){
#-- Creating the dictionary object I need to parse into StartWorkflow. This could be most other workflow commands.
$object = New-Object 'system.collections.generic.dictionary[string,object]'
$object.Add("WorkflowStart", "StartWorkflow");
$wfis.StartWorkflowOnListItem($WF, $item.ID, $object)
}
см http://ranaictiu-technicalblog.blogspot.com/2013/05/programmatically-start-sharepoint-2013.html для получения подробной информации –