我最近才开始写Powershell脚本。我有一个项目,我在那里执行负载测试。我运行测试,并根据测试结果生成报告。我使用的工具通过他们的API完成这一切。所以我有3个Rest API,我使用Powershell脚本发送调用。
- 第一次调用:启动负载测试,无论配置中设置了多少次迭代(可能运行数小时):**
Invoke-RestMethod -Method Post -Uri $StartTestUrl -ContentType "application/json" -OutVariable StartTestResponse -Body $StartTestRequestBody | ConvertTo-Json
- 第二次调用:获取刚运行/或仍在运行的负载测试的状态:**
Invoke-RestMethod -Method Post -Uri $GetStatusUrl -ContentType "application/json" -OutVariable GetStatusResponse -Body $GetStatusRequestBody | ConvertTo-Json
- 第3次调用:从完成的测试运行生成报告:**
Invoke-RestMethod -Method Post -Uri $GenerateReportUrl -ContentType "application/json" -OutVariable GenerateReportResponse -Body $GenerateReportRequestBody | ConvertTo-Json
- 目标:**我希望能够在Powershell中编写一个DO-WHILE循环或其他循环,通过每分钟调用第二个api来检查测试状态,以获得响应中的状态"DONE"。然后启动第三个调用,因为如果测试没有完成,我就无法生成报告。
- 示例:**
foreach(var minute in minutes)
{
// if(status.Done)
// {
// CALL GenerateReport
// }
// else
//{
//keep checking every minute
//}
}
2条答案
按热度按时间h79rfbju1#
你可以使用do-while循环来完成这个任务。在这个例子中,我们假设
$GetStatusResponse
只是一个$true
/$false
值。实际上,你需要修改代码来检查实际的“DONE”消息。y3bcpkx12#
开始休眠秒数60
将暂停执行1分钟
MS link to cmdlet