AzDataFactoryV2PipelinesLastExecution.psm1

<#
     .SYNOPSIS
         This command provides the list of pipelines and the coressponding last execution Pipelinerun details of the same.
    
     
    
     .DESCRIPTION
         This command provides the list of pipelines and the coressponding last execution Pipelinerun details of the same.
    
     
    
     .PARAMETER ResourceGroupName
     The resource group containing the DataFactory V2
    
     
    
     .PARAMETER DataFactoryName
     The name of the DataFactory V2.
    
     
    
     .PARAMETER PipelineName
     The name of the Pipeline in the DataFactory V2.
    
     
    
     .EXAMPLE
     Get-AzDataFactoryV2PipelinesLastExecution -ResourceGroupName "<<RGName>>" -DataFactoryName "<<ADFV2Name>>"
     Get-AzDataFactoryV2PipelinesLastExecution -ResourceGroupName "<<RGName>>" -DataFactoryName "<<ADFV2Name>>" -PipelineName "<<PipelineName>>" -$StartRange "<<StartRange>>" -$EndRange "<<EndRange>>"
      
#>

Function Get-AzDataFactoryV2PipelinesLastExecution
{

 

    Param 
    (
    [Parameter(Mandatory=$true)]
    [string] $ResourceGroupName ,
    [Parameter(Mandatory=$true)]
    [string] $DataFactoryName ,
    [Parameter(Mandatory=$false)]
    [string] $PipelineName,
    [datetime]$StartRange = "1900-01-01",
    [datetime]$EndRange = (Get-Date).ToString()

    )


$resultarray = @()
if (!$PipelineName)
{

$Pipelines=Get-AzDataFactoryV2Pipeline -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName

for($j=0; $j -lt $Pipelines.Length; $j++)
{

$PipelineRuns=Get-AzDataFactoryV2PipelineRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -LastUpdatedAfter $StartRange -LastUpdatedBefore $EndRange -PipelineName $Pipelines[$j].Name
if  ($PipelineRuns) ## if there are no runs for that pipeline skip
{
$resultarray=$resultarray + $PipelineRuns[[Array]::IndexOf($PipelineRuns.RunStart,($PipelineRuns  | Measure-Object -Property RunStart -Maximum).Maximum)]
}

}

$resultarray |format-table -Property PipelineName,RunId,RunStart,RunEnd,DurationInMs,Status,Message -AutoSize


} #endif
else
{


$PipelineRuns=Get-AzDataFactoryV2PipelineRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -LastUpdatedAfter $StartRange -LastUpdatedBefore $EndRange -PipelineName $PipelineName
if  ($PipelineRuns) ## if there are no runs for that pipeline skip
{
$PipelineRuns[[Array]::IndexOf($PipelineRuns.RunStart,($PipelineRuns  | Measure-Object -Property RunStart -Maximum).Maximum)] |format-table -Property PipelineName,RunId,RunStart,RunEnd,DurationInMs,Status,Message -AutoSize
}

}#endelse


} 
 
Export-ModuleMember -Function Get-AzDataFactoryV2PipelinesLastExecution