如何使用PowerShell为Azure Data Factory V2数据集/管道获取有效的JSON?

如何使用PowerShell为Azure Data Factory V2数据集/管道获取有效的JSON?,json,powershell,azure-data-factory-2,Json,Powershell,Azure Data Factory 2,我在Azure Data Factory V2中有一些管道需要更新。具体来说,我需要更新数据集的模式。我最初使用用户界面创建它们。由于列的数量非常大,用户界面处理它们的速度变得非常慢,因此我想切换到使用PowerShell 我编写了一个脚本,可以使用Set-AzureRmDataFactoryV2Dataset和Set-AzureRmDataFactoryV2Pipelinecmdlet从JSON文件中更新它们。我还希望能够使用PowerShell使用当前配置生成JSON文件。我尝试过使用匹配的

我在Azure Data Factory V2中有一些管道需要更新。具体来说,我需要更新数据集的模式。我最初使用用户界面创建它们。由于列的数量非常大,用户界面处理它们的速度变得非常慢,因此我想切换到使用PowerShell

我编写了一个脚本,可以使用
Set-AzureRmDataFactoryV2Dataset
Set-AzureRmDataFactoryV2Pipeline
cmdlet从JSON文件中更新它们。我还希望能够使用PowerShell使用当前配置生成JSON文件。我尝试过使用匹配的
Get-AzureRmDataFactoryV2Dataset
Get-AzureRmDataFactoryV2Pipeline
cmdlet,这些cmdlet对于获取有关它们的一般信息非常有用,但我无法从PSDataSet对象返回有效的JSON文件。下面是我一直在尝试的命令,但它最终为模式提供了一堆空的JSON数组

$dtSrc = Get-AzureRmDataFactoryV2Dataset -ResourceGroupName $resourceGroupName -DataFactoryName $dataFactoryName -Name $dtSrcName
ConvertTo-Json $dtSrc.Properties -Depth 100 | Out-File "$dtSrcName.json" -Width 1000000
Edit:根据王张的回答,我编辑了我的
converttojson
语句,如下所示。现在输出看起来好多了(没有空数组),但仍然不匹配


请告诉我在第二个命令中设置“-Depth-100”的原因好吗?似乎要删除它并修改第二个命令,因为以下命令工作正常:

转换为Json$dtSrc.Properties |输出文件“$dtSrcName.Json”-宽度1000000


请试一试。

请告诉我在第二个命令中设置“-Depth-100”的原因好吗?似乎要删除它并修改第二个命令,因为以下命令工作正常:

转换为Json$dtSrc.Properties |输出文件“$dtSrcName.Json”-宽度1000000


请试一试。

您可以下载ADF的ARM模板(它们使用json格式)编辑它们,然后再次上传,可以使用UI、az cli甚至powershell


或者更好的做法是,将git存储库链接到ADF,然后在本地克隆repo,进行更改,并通过推送到指定的生产分支(通常是主分支)将其发布到ADF。

您可以下载ADF的ARM模板(它们使用json格式)编辑它们并再次上传,或者使用UI,az cli甚至powershell


或者更好的方法是,将git存储库链接到ADF,然后在本地克隆repo,进行更改,并通过推送到指定的生产分支(通常是主分支)将其发布到ADF。

不确定azure,但常规数据集只是一组数据表。因此,您可能需要提取实际存储数据的其他对象。就像在常规数据集中一样,我会做一些类似$ds.Tables[0]|选择Column1、Column2、Column3 | convertto的事情-json@MikeTwc这是专门询问Azure Data Factory数据集,它更像是表的定义,而不是实际的数据集。我寻找的结果需要遵循中概述的模式。不确定azure,但常规数据集只是一组数据表。因此,您可能需要提取实际存储数据的其他对象。就像在常规数据集中一样,我会做一些类似$ds.Tables[0]|选择Column1、Column2、Column3 | convertto的事情-json@MikeTwc这是专门询问Azure Data Factory数据集,它更像是表的定义,而不是实际的数据集。我正在寻找的结果需要遵循中概述的模式。原因是我对这方面还不熟悉,出于某种原因,我认为这会有所帮助。显然我错了。事实上,将深度设置为1(而不是默认的2)可以获得更好的结果,但它仍然不符合实际情况。原因是我不熟悉这个,出于某种原因,我认为它会有所帮助。显然我错了。实际上,将深度设置为1(而不是默认的2)可以获得更好的结果,但它仍然与
$dtSrc = Get-AzureRmDataFactoryV2Dataset -ResourceGroupName $resourceGroupName -DataFactoryName $dataFactoryName -Name $dtSrcName
ConvertTo-Json $dtSrc -Depth 1 | Out-File "$dtSrcName.json" -Width 1000000