如何查找Azure订阅下所有ADF实例中的非活动管道
查询Azure订阅下未关联触发器的ADF非活动管道方法
操作前提
- 本地已安装Azure PowerShell的
Az.DataFactory模块 - 账号拥有对应订阅的ADF读取权限
操作步骤
- 首先执行模块安装、登录Azure并切换到目标订阅:
# 安装Az.DataFactory模块 Install-Module -Name Az.DataFactory -Force -AllowClobber # 登录Azure账号 Connect-AzAccount # 切换到目标订阅,替换为你的订阅ID Set-AzContext -SubscriptionId "xxxx-xxxx-xxxx-xxxx"
- 执行以下脚本批量查询所有非活动管道:
# 定义数组存储结果 $inactivePipelines = @() # 获取订阅下所有ADF v2实例 $adfInstances = Get-AzDataFactoryV2 foreach ($adf in $adfInstances) { $rgName = $adf.ResourceGroupName $adfName = $adf.DataFactoryName # 获取当前ADF下所有管道 $allPipelines = Get-AzDataFactoryV2Pipeline -ResourceGroupName $rgName -DataFactoryName $adfName # 获取当前ADF下所有触发器 $allTriggers = Get-AzDataFactoryV2Trigger -ResourceGroupName $rgName -DataFactoryName $adfName # 收集所有被触发器关联的管道名称 $triggeredPipelineNames = @() foreach ($trigger in $allTriggers) { $triggeredPipelineNames += $trigger.Properties.Pipelines.PipelineReference.ReferenceName } # 去重 $triggeredPipelineNames = $triggeredPipelineNames | Select-Object -Unique # 筛选未关联任何触发器的管道 $nonTriggeredPipelines = $allPipelines | Where-Object { $_.Name -notin $triggeredPipelineNames } # 存入结果数组 foreach ($pipeline in $nonTriggeredPipelines) { $inactivePipelines += [PSCustomObject]@{ 资源组名称 = $rgName ADF实例名称 = $adfName 非活动管道名称 = $pipeline.Name 管道ID = $pipeline.Id } } } # 输出结果 $inactivePipelines | Format-Table -AutoSize
补充说明
- 如果你还需要排查过去90天内没有运行记录的管道,可以在上述筛选逻辑基础上叠加查询运行记录的逻辑,示例命令如下:
# 定义查询的时间范围 $endTime = Get-Date $startTime = $endTime.AddDays(-90) # 查询指定管道的运行记录 $pipelineRuns = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $rgName -DataFactoryName $adfName -PipelineName $pipeline.Name -LastUpdatedAfter $startTime -LastUpdatedBefore $endTime
- 如果查询结果中
$pipelineRuns为空,则说明该管道在过去90天内无任何运行记录,属于完全闲置的非活动管道。
内容的提问来源于stack exchange,提问作者Learn2Code
相关产品推荐
相关产品推荐

