jueves, 4 de septiembre de 2014

Inventario de WorkFlows en Sharepoint 2010

Mediante este Script PowerShell podemos realizar un inventario de Workflows en Sharepoint 2010 o 2013

He incluido la opción de sacarlo por OutGrid o por CSV
También se ha extraído el AssemblyName y el ClassName del XML de configuración, de forma que permite localizar los proyectos/componentes que los contienen.
Para filtrar los workflows de aprobación (Nativos) del listado se ha usado un -NotLike, podemos usar esta linea para filtrar otros o localizar uno concreto

#List all workflows in farm
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

function ListWF()
{
    #Grab all webs
    Get-SPSite -Limit All | % {$webs += $_.Allwebs}
    if($webs.count -ge 1)
    {
        foreach($web in $webs)
        {
                #Grab all lists in the current web
                $lists = $web.Lists
                foreach($list in $lists)
                {
                   #Get all workflows that are associated with the current list
                        foreach($listassociation in $list.WorkflowAssociations)
                        {
                            if( $listassociation.name -NotLike "Aprobaci*")
                            {
                                [xml]$xmlconf=$listassociation.BaseTemplate.xml;
                                $data = @{
                                "Lista" = $List.Title; 
                                "Web" = $web.Url;
                                "NombreAsociacion" = $listassociation.name;
                                "Name" =$listassociation.BaseTemplate.Name;
                                "ID" =$listassociation.BaseTemplate.ID;
                                "CodeBesideClass" =$xmlconf.WorkflowTemplate.WorkFlowTemplateIdSet.CodeBesideClass;
                                "CodeBesideAssembly" =$xmlconf.WorkflowTemplate.WorkFlowTemplateIdSet.CodeBesideAssm;
                                }
                            New-Object PSObject -Property $data
                            }
                        }
               }         

        }
    $web.Dispose()
    }


}
ListWF | Out-GridView
#$csvFilePath = "C:\Workflows_Listado.csv"
#ListWF | Export-Csv -NoTypeInformation -Path $csvFilePath