我是一个Powershell新手,仍在学习。我正在尝试获取已在Web应用程序中停止的Azure Web作业的列表。我知道当我运行命令az-webapp-webjob连续列表时,我会得到一大组数组数据。
我很难将其拆分,有人能建议我如何将其拆分为个人工作和财产吗?我尝试了$webjobs=($webname.Split('}'((,但它不会拆分这个巨大的数组。
这是我当前的代码
$groups=get-AzResourceGroup|其中{$_.ResourceGroupName-like">Dev"}foreach($groups中的$group({
Write-Host -ForegroundColor Cyan "processing resourceGroup" $group.ResourceGroupName
$webApps = Get-AzWebApp -ResourceGroupName $group.ResourceGroupName
foreach($webApp in $webApps){
write-host -ForegroundColor Yellow $webApp.Name
$webname = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].name' -o tsv)
$webstatus = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].status' -o tsv)
Write-host $webname
Write-host $webstatus
}
}
我得到的结果是…
处理资源Group devhub-dev应用程序hubhubv3 dev-app hub/Data hubv3 dev/app hub/ProcessToolData hubv3 dev app hub/ToolDataNotifications hubv3 dev-app hub/UuploadLasToSftp hubv3 dev-app hub/ApplicationInsightsProfiler3 hubv3 dev-app hub/DaaS跑步跑步跑步跑步停止hubv3开发应用程序身份验证服务hubv3开发应用程序验证服务/ApplicationInsightsProfiler3跑步hubv3开发应用程序apihubv3开发应用程序api/ApplicationInsightsProfiler3运行
我希望实现的是
hub-dev应用程序hubhubv3 dev-app hub/Data正在运行hubv3 dev-app hub/ProcessToolData正在运行hubv3 dev-app hub/ToolDataNotifications正在运行hubv3 dev-app hub/UuploadLasToSftp正在运行hubv3 dev-app hub/ApplicationInsightsProfiler3正在运行hubv3开发应用程序hub/DaaS已停止
如有任何帮助,我们将不胜感激。
您得到的结果是所编写代码的预期结果。考虑到tsv文档,意味着$webname
和$webstatus
是数组。当您写入Write-Host $webstatus
时,它将打印数组中的所有数据,在这种情况下:
Running
Running
Running
Running
Running
Stopped
你可以做以下事情:
$webname = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].name' -o tsv)
$webstatus = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].status' -o tsv)
for ($i = 0; $i -lt $webname.length; $i++) {
Write-Host $webname[$i]
Write-Host $webstatus[$i]
}
但是应该使用另一个查询:[].[name, status]
。看看jmesPath。
这样做更好,因为您只执行1个请求,而不是两个,并且它应该具有您期望的格式,即名称和状态的数组。
$webjobInfo = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].[name, status]' -o tsv)
Write-Host $webJobInfo