Запуск рабочего процесса SharePoint из PowerShell для каждого элемента.

Бывают случаи когда необходимо выполнить рабочий процесс Sharepoint для каждого элемента (внесли изменения в процесс или добавили поле).

Если элементов 10-20, то можно и руками, а если 1000+…

Для этого случаю есть скрипт который запускает определенный рабочий процесс и выполняет его для каждого элемента.

$sourceWebURL = 'http(s)://<ваш сайт>'
$sourceListName = '<Имя списка>'
$TargetWorkflow = '<Имя рабочего процесса>'
$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)
}

Скрипт выполняем из командной консоли Sharepoint.

Теперь можно сделать периодическое выполнение данного скрипта.

Для этого в “Планировщик заданий” создаем задание “Библиотека планировщика заданий”  -> “Microsoft” -> “Windows” .

“Действие” -> “Программа или сценарий” – C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe

“Добавить аргумент” – -PSConsoleFile “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\CONFIG\POWERSHELL\Registration\psconsole.psc1” -executionpolicy bypass -command “.'<путь к вашему скрипту >\<скрипт>.ps1′”

В общих настройка задания указываем запуск от пользователя входящего в группу администраторов Sharepoint и устанавливаем следующие опции:

  • Выполнять для всех пользователей
  • Выполнять с наивысшими правами

Источник.