azure - 如何使用 azure get 命令和 powershell 设置数组
问题描述
我是一个完全的 Powershell 新手,还在学习。我正在尝试获取已在 webapp 中停止的 Azure Webjobs 列表。我明白当我运行命令 az webapp webjob Continuous list 时,我会得到一大组数组数据。
我在拆分时遇到了麻烦,有人可以建议我如何将其拆分为个人工作及其财产吗?我试过 $webjobs = ($webname.Split('}')) 并且它不会拆分巨大的数组。
这是我当前的代码
$groups = 获取-AzResourceGroup | where{$_.ResourceGroupName -like " Dev "} foreach($groups in $groups){
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
}
}
我得到的结果是...
处理资源组 dev hub-dev-app-hub hubv3-dev-app-hub/Data hubv3-dev-app-hub/ProcessToolData hubv3-dev-app-hub/ToolDataNotifications hubv3-dev-app-hub/UploadLasToSftp hubv3-dev- app-hub/ApplicationInsightsProfiler3 hubv3-dev-app-hub/DaaS Running Running Running Running Running Stopped hubv3-dev-app-authservice hubv3-dev-app-authservice/ApplicationInsightsProfiler3 Running hubv3-dev-app-api hubv3-dev-app- api/ApplicationInsightsProfiler3 正在运行
我希望实现的是
hub-dev-app-hub hubv3-dev-app-hub/Data 运行 hubv3-dev-app-hub/ProcessToolData 运行 hubv3-dev-app-hub/ToolDataNotifications 运行 hubv3-dev-app-hub/UploadLasToSftp 运行 hubv3-dev -app-hub/ApplicationInsightsProfiler3 正在运行 hubv3-dev-app-hub/DaaS 已停止
任何帮助将不胜感激。
解决方案
您得到的结果是编写的代码所期望的。考虑到tsv docs,意味着$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 个请求而不是 2 个请求,并且它应该具有您期望的格式,即名称和状态数组。
$webjobInfo = (az webapp webjob continuous list --name $webApp.Name --resource-group $group.ResourceGroupName --query '[].[name, status]' -o tsv)
Write-Host $webJobInfo
推荐阅读
- neo4j - 如何使用 gremlin 查询表示节点选择的多个属性集标准
- flutter - 我想在我的颤振应用程序中显示弹出客户警报框,例如引导警报框
- python - python中的进度条更新
- prism - 如果使用 RegisterForNavigation,不需要 ViewModelLocator?
- c# - 使用 Mongo Driver 在 C# 上的 mongodb 上对 2 个或更多字段进行分组
- powershell - PowerShell - 如果失败,比较两个数组返回索引
- regex - 电子邮件格式的 Dynamics AX 字符串操作
- java - 如何使用 Synopsys 检测扫描 Java Maven 项目
- pandas - Pandas - 根据特定键值从 Dataframe 中提取值
- javascript - Angular - 如何使用 routerLink 打开同一组件中的链接