如何使用powershell使用azure get命令设置数组



我是一个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

最新更新