【问题标题】:Cannot open Workflows from Item after deleting workflows via Powershell通过 Powershell 删除工作流后无法从项目打开工作流
【发布时间】:2014-11-03 13:13:58
【问题描述】:

我做了以下事情:

$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 sharepoint-2010 workflow sharepoint-2013 sharepoint-workflow


    【解决方案1】:

    我解决了这个问题。所有通过 google 来到这里的人请注意:这不是删除工作流的好习惯,但如果您已经在 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);  
            }
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多