如何提高工作流程内部的AzRecoveryServicesBackupJobDetails性能?

时间:2019-07-15 13:50:34

标签: azure workflow-foundation azure-powershell

我正在尝试运行Azure Powershell并行作业,以加快从Azure门户收集备份数据的速度。 每次并行运行不会加快Get-AzRecoveryServicesBackupJobDetails -JobId $ jobId属性的数据收集。它仍然看起来像是在单线程中运行。我想以多线程方式收集数据,就像收集所有备份作业ID一样。

Start-RSJob可以帮助我实现这一目标,但是我会随机丢失数据,因此这不是一种选择。

        Param($sVault,$bVault,$bSizeData,$bDataArray)
        foreach -parallel -ThrottleLimit 10 ($sData in $bSizeData) {
                $Jobs=$sData.JobId   
                $workflow:bDataArray+=$Jobs
             }
        foreach -parallel ($jobId in $workflow:bDataArray) {
            $(Get-AzRecoveryServicesBackupJobDetails -JobId $jobId).Properties
        }    

$ workflow:bDataArray + = $ Jobs快速且按预期完成。我能够很快从Azure接收所有备份作业ID。

$(Get-AzRecoveryServicesBackupJobDetails -JobId $ jobId)。Properties缓慢地打印出作业详细信息,就像它以单线程顺序运行一样。有什么方法可以提高代码第二部分的性能?

编辑:我已经将Get-AzRecoveryServicesBackupJobDetails部分移至另一个并行任务和分离的任务中。现在的问题似乎是数据已反序列化,并且无法以使Azure命令可以理解的方式传递数据。

foreach -parallel ($jobId in $workflow:bDataArray) {
            Import-AzContext -Path .\azsession.json
            Set-AzRecoveryServicesVaultContext -Vault $bVault
            Get-AzRecoveryServicesBackupJobDetails -JobId $jobId   
}   

设置库上下文失败:

type "Microsoft.Azure.Commands.RecoveryServices.ARSVault". Error: "Cannot convert the "Microsoft.Azure.Commands.RecoveryServices.ARSVault" value of 
type "Deserialized.Microsoft.Azure.Commands.RecoveryServices.ARSVault" to type "Microsoft.Azure.Commands.RecoveryServices.ARSVault"."

编辑:我想我开始对此感到困惑。我不能整体使用反序列化的对象,但是可以访问其属性。我将尝试与他们一起玩,看看进展如何。

0 个答案:

没有答案