从Azure数据工厂日志中提取数据

时间:2018-11-12 04:28:56

标签: azure-data-factory-2 powershell-v5.1

我正在检索Azure Data Factory日志以使用Powershell进行分析。

我正在成功检索顶级日志(管道)和嵌套在其中的日志(活动)并写入文本文件。

但是我在整理活动文件时遇到问题,该文件由平面记录和包含json的字段组成

这是我的删节稿。问题出在最后一个cmdlet调用上。我需要弄清楚如何将其整理成我需要的东西

$DateFrom = (new-object System.DateTime 2018, 07, 01)
$DateTo = Get-Date
$Pipeline="MyPipeline"
$Outputfile="C:\SRC\ADF\$Pipeline.TXT"
$OutputSubfile="C:\SRC\ADF\$Pipeline.Sub.TXT"
$DFname ="MyDataFactory"
$RG="MyRG"
$TenantId="a16xxxx-xxx-xxx"
$Subscription="d8xxx-xxx-xxx"

$Credential = Get-Credential

Connect-AzureRmAccount `
-TenantId $TenantId `
-Subscription $Subscription `
-Credential $Credential

$oADFLog = Get-AzureRmDataFactoryV2PipelineRun `
-ResourceGroupName $RG `
-DataFactoryName $DFname `
-LastUpdatedAfter $DateFrom `
-LastUpdatedBefore $DateTo `
-PipelineName $Pipeline

# This is the pipeline log - it works as required
$oADFLog | Export-Csv -Path $Outputfile -Delimiter "`t" -NoTypeInformation

# Delete the subtask file
Remove-Item -Path $oADFSubLog -Force -Recurse -ErrorAction Ignore

Foreach ($PipelineRun IN $oADFLog)
{
    # For each parent run ID, check the child tasks
    # File results in thispart need to be cleaned up
    $oADFSubLog = Get-AzureRmDataFactoryV2ActivityRun `
    -PipelineRunId $PipelineRun.RunId `
    -ResourceGroupName $PipelineRun.ResourceGroupName `
    -DataFactoryName $PipelineRun.DataFactoryName `
    -RunStartedAfter $DateFrom `
    -RunStartedBefore $DateTo

    # This is the activity log - it has nested data types and is ugly
    # I need to flatten the Json inside the message
    $oADFSubLog | Export-Csv -Append -Path $OutputSubfile -Delimiter "`t" -NoTypeInformation
}

鉴于上面的脚本中的$oADFSubLog,我发现我可以像这样拉出一些自己需要的东西:

(ConvertFrom-Json -InputObject $oADFSubLog[0].Input.ToString()).packageLocation

这将我需要的属性从Json中拉出

但是我不确定如何将其与其他平面属性一起轻松地推送到文件中

我已经尝试过了,这实际上只是黑暗中的一击

$oADFSubLog | Select-Object -Property ActivityName,@(ConvertFrom-Json -InputObject $oADFSubLog[0].Input.ToString()).packageLocation 

但我知道

  

选择对象:无法转换System.Management.Automation.PSObject   改为以下类型之一{System.String,   System.Management.Automation.ScriptBlock}。

我已经看到了一些可以添加的自定义cmdlet和脚本的示例,但是我现在还不想去那里-我只想了解如何执行此操作。

0 个答案:

没有答案