0

我正在尝试为动态 365 中的数据移动操作实现池化功能。我有一个 PowerShell 脚本,它有一个名为 Test(pera1,pera2,pera3..) 的函数,当我们调用此函数时,大约需要 1 小时以上的时间才能完成事件。现在我必须根据这个 Test() 函数结果调用另一个任务。如果我的条件匹配,那么将调用另一个任务,否则我必须将 Start-Sleep -Seconds 3600 来完成事件。

function EnvOperationPooling($pera1, $pera2, $pera3)
{
 // here API call code 
// API result
if($apiResponse.DeploymentState-eq 'Inprogress')
{
  Start-Sleep -Seconds 3600
  EnvOperationPooling -proj1 $pera1 -proj2 $pera2 -proj2 $pera2
 Write-Host "##vso[task.setvariable variable=DeploymentState;isOutput=true]$($apiResponse.DeploymentState)"
}
else
{
 Write-Host "##vso[task.setvariable variable=DeploymentState;isOutput=true]$($apiResponse.DeploymentState)"
}

}

我怎样才能使它递归任何使上述代码更好的建议..?

4

1 回答 1

0

对于您的流程的递归操作和节省时间,您需要使用 PowerShell 的后台作业。

如果您启动后台作业,命令提示符会立即返回,即使该作业需要较长时间才能完成。在作业运行时,您可以继续在会话中工作而不会中断。参考

Start-Job -ScriptBlock {Get-Process}

在此处输入图像描述

请参阅此处了解更多信息

于 2021-08-02T10:33:30.927 回答