通过Powershell删除工作流后,无法从项打开工作流



我做了以下操作:

$oldWorkflow="MyOldWorkflow";
$oldAssoc=$list.WorkflowAssociations.GetAssociationByName($oldWorkflow,"en-US");
$list.RemoveWorkflowAssociation($oldAssoc);

在那之后,我可以看到工作流已经不存在了。但在我尝试显示工作流时收到错误之前,在每个有工作流的项目上:

Getting Error Message for Exception System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentException: Column 'Reservat' doesn't exist

我从未有过这样的专栏。手动将该列添加到列表后,错误消息更改为:

Application error when access /_layouts/15/Workflow.aspx, Error=Object reference not set to an instance of an object. 

有机会解决这个烂摊子吗?(旧的工作流不再作为WSP存在)

更新:我仍然可以使用Powershell找到工作流:

     foreach ($wf in $item.Workflows) 
  if ($wf.ParentAssociation.Name -eq $oldWorkflow) 
                ...

但同时$list.WorkflowAssociations.GetAssociationByName不会返回工作流程

我解决了这个问题。请注意,所有通过谷歌来到这里的人:这不是删除工作流的好方法,但只有当您已经在SharePoint中搞砸了工作流时,这才是一个解决方案。(和我一样)

   $oldWorkflow="MyOldWorkflow";
        foreach ($item in $list.Items) {
                foreach ($wf in $item.Workflows) {
                    if ($wf.ParentAssociation.Name -eq $oldWorkflow)  {
                        Write-Host ("[{0}] Workflow '{1}' will be removed" -f $item.Title, $wf.ParentAssociation.Name);                            
                        $itemsToAdd.Add($wf);
                }
            }
        }
        ForEach($item in $itemsToAdd) {
            $man.RemoveWorkflowFromListItem($item);  
        }

最新更新