Связать рабочий процесс утверждения с помощью CSOM Powershell

Я пытаюсь прикрепить рабочий процесс утверждения к своим библиотекам SharePoint, но каждый раз, когда получаю сообщение «значение не может быть нулевым»,

но я не нахожу, где я ошибаюсь,

ниже мой код PowerShell, который я пытаюсь

Есть ли какой-либо параметр, который мне не хватает для определения значений?

Другие функции - просто проверить, существует ли список, а если нет, то создать его, также при создании списка я не могу найти шаблон списка f0r Task (2010) в методе createListByTemplate ()

Спасибо, Пару

 function TryGetList($spoCtx,$listName)
    {
        $web = $spoCtx.Web 
        $lists = $web.Lists
        $spoCtx.Load($web) 
        $spoCtx.Load($lists)   
        $spoCtx.ExecuteQuery() 
        $listExist = $web.Lists | where{$_.Title -eq $listName}
        if($listExist)
        {
            return $true
        }
        else
        {
            return $false
        }
    }

    function CreateListbyTemplate($spoCtx,$listName,$listTemplate,$listDescription)
    {
        try
        {
            $spoWeb=$spoCtx.Web
            $spoListCreationInformation=New-Object Microsoft.SharePoint.Client.ListCreationInformation 
            $spoListCreationInformation.Title=$listName 
            $spoListCreationInformation.Description = $listDescription
            $spoCtx.Load($web.ListTemplates)
            $spoCtx.ExecuteQuery()
            #$spoListCreationInformation.TemplateType=[int][Microsoft.SharePoint.Client.ListTemplatetype]::GenericList 
            #$spoList=$spoWeb.Lists.Add($spoListCreationInformation) 
            $spoListCreationInformation.ListTemplate = $web.ListTemplates | where {$_.InternalName -match $listTemplate }
            $spoWeb.Lists.Add($spoListCreationInformation) 
            $spoCtx.ExecuteQuery()
            return $listName
            Write-Host "----------------------------------------------------------------------------"  -foregroundcolor Green 
            Write-Host "List "$listName"  created  !!" -ForegroundColor Green 
            $spoCtx.Dispose() 
        }
        catch  [Exception]
        {
            Write-Host -ForegroundColor Red "An Error Occured"
            $_.Exception.Message
        }

    }


    # $spoCtx has current context 
    function attachApprovalWorkflow($spoCtx)
    {
        try
        {

            $SuccessLogs=$records.LogImportSuccess + (get-date -f yyyy-MM-dd_hh_mm_ss).ToString()+".csv"
            $FailureLogs=$records.LogImportFailure + (get-date -f yyyy-MM-dd_hh_mm_ss).ToString()+".csv"
            Add-Content $SuccessLogs “ID, Status”;
            Add-Content $FailureLogs “ID,Message”;

            [Microsoft.SharePoint.Client.Web]$web = $spoCtx.Web


            try
            {
                $liststoignore = @("Workflow History", "Workflow Tasks", "Master Page Gallery", "Composed Looks", "MicroFeed", "Site Assets", "Site Pages","Documents", "appdata", "appfiles", "Converted Forms", "Form Templates", "List Template Gallery", "Solution Gallery", "Style Library", "TaxonomyHiddenList", "User Information List", "Web Part Gallery", "Theme Gallery")
                [Microsoft.SharePoint.Client.ListCollection] $lstcoll = $spoCtx.Web.Lists;
                $spoCtx.Load($lstcoll);
                $spoCtx.ExecuteQuery()

                foreach($listsName in $lstcoll)
                {
                    if ($listsName.BaseTemplate -eq 101 -and  !$liststoignore.Contains($listsName.Title))
                        {

                            [Microsoft.SharePoint.Client.List]$list = $web.Lists.GetByTitle($listsName.Title)

                             $spoCtx.load($list)
                             $spoCtx.ExecuteQuery();

                             ##################

                            $tasklist = TryGetList $spoCtx "Workflow Tasks"
                            if ($tasklist -eq $false)
                            {
                                $tasklist = CreateListbyTemplate $spoCtx "Workflow Tasks" "Tasks (2010)" "Workflow Tasks" + " list"
                            }
                            else
                            {[Microsoft.SharePoint.Client.List]$tasklist1 = $web.Lists.GetByTitle("Workflow Tasks")
                             $spoCtx.load($tasklist1)
                             $spoCtx.ExecuteQuery()
                            }

                            $historylist = TryGetList $spoCtx "Workflow History"                      
                            if ($historylist -eq $false)
                            {
                                $historylist = CreateListbyTemplate $spoCtx "Workflow History" "Workflow History" "Workflow History" + " list"
                            }
                            else
                            {
                             [Microsoft.SharePoint.Client.List]$historylist1 = $web.Lists.GetByTitle("Workflow History")
                             $spoCtx.load($historylist1)
                             $spoCtx.ExecuteQuery()
                            }




                             ###################

                             $workflowName = $listsName.Title + " Workflow"
                             $wfApprovalWFTemplate = $web.WorkflowTemplates.GetByName("Approval - SharePoint 2010")

                             $spoCtx.Load($wfApprovalWFTemplate)
                             $spoCtx.ExecuteQuery()

                             #Create a Workflow Association info
                             $wfassociationInfo = New-Object Microsoft.SharePoint.Client.Workflow.WorkflowAssociationCreationInformation;
                             $wfassociationInfo.ContentTypeAssociationTaskListName = $tasklist1
                             $wfassociationInfo.ContentTypeAssociationHistoryListName = $historylist1
                             $wfassociationInfo.Template = $wfApprovalWFTemplate
                             $wfassociationInfo.Name = $workflowName
                             $wfassociationInfo.TaskList =$web.Lists.GetByTitle("Workflow Tasks")
                             $wfassociationInfo.HistoryList = $web.Lists.GetByTitle("Workflow History")

                             #Associate to the Document Library where you want the approval WF to be added .
                             Write-Host "Create a new Workflow Associationg with the Neccesary information."
                             $wf = $list.WorkflowAssociations.Add($wfassociationInfo)

                             $wf.AutoStartChange = $false
                             $wf.AutoStartCreate = $false
                             $wf.AllowManual = $true
                             $wf.Update();

                             $spoCtx.ExecuteQuery()

                             Write-Host -ForegroundColor Yellow "Workflow enabled on " $list.Title
                             Add-Content $SuccessLogs $list.Title
                         }
               }

            }
            catch  [Exception]
            {   
                Write-Host -ForegroundColor Red "An Error Occured" $list.Title
                $_.Exception.Message
                Add-Content $FailureLogs $listsName +","+$_.Exception.Message
            }
    }
        catch [Exception]
        {
            Write-Host -ForegroundColor Red "An Error Occured"
            $_.Exception.Message + $list.Title
        }

    }

person paru upreti    schedule 17.11.2017    source источник
comment
Какая строка выдает ошибку?   -  person TheMadTechnician    schedule 17.11.2017
comment
$ wf = $ list.WorkflowAssociations.Add ($ wfassociationInfo) эту строку, присоединяя рабочие процессы к списку.   -  person paru upreti    schedule 19.11.2017


Ответы (1)


Приведенный выше код, которым я поделился, работает абсолютно нормально, просто вам нужно включить функцию ниже, чтобы использовать рабочий процесс утверждения SharePoint 2010.

Эту функцию необходимо включить

person paru upreti    schedule 20.11.2017