You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Search-AzGraph查询以获取App Service Plan的操作系统信息

问题描述

通过以下Bicep文件部署App Service Plan:

param tags object
param name string
param location string = resourceGroup().location
param skuName string = 'F1' 

resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
    name: name
    location: location
    properties:{
        
    }
    tags: tags
    sku: {
        name: skuName
    }
    kind:'windows'
}

output resourceId string = appServicePlan.id

想要查询资源组内所有资源,针对Microsoft.Web/serverfarms类型的资源获取操作系统信息,使用了以下PowerShell命令:

Search-AzGraph -query "where resourceGroup in ($resourceGroupFilter)  | project name, type, kind, location, resourceGroup, sku, OS = tostring(properties.kind) | order by name asc" 

但查询返回的kind字段始终为functionApp,而非预期的Windows或Linux,需要修改查询以正确获取操作系统信息。

解决方案

方法一:通过properties.reserved字段判断(最可靠)

Azure中,Linux类型的App Service Plan会将properties.reserved设为true,Windows类型则为false,可以用Kusto的iff函数转换为明确的OS名称:

Search-AzGraph -query "where resourceGroup in ($resourceGroupFilter) 
| project name, type, location, resourceGroup, sku, 
  OS = iff(type == 'Microsoft.Web/serverfarms', iff(properties.reserved == true, 'Linux', 'Windows'), 'N/A')
| order by name asc"

方法二:解析kind字段的后缀

当App Service Plan用于托管函数应用时,kind字段格式为functionApp,<OS>;用于普通Web应用时为app,<OS>。可以通过split函数提取OS部分:

Search-AzGraph -query "where resourceGroup in ($resourceGroupFilter) 
| project name, type, kind, location, resourceGroup, sku,
  OS = iff(type == 'Microsoft.Web/serverfarms', split(kind, ',')[1], 'N/A')
| order by name asc"
原因说明
  1. 原查询中tostring(properties.kind)是错误的,App Service Plan的资源模型中不存在properties.kind字段,无法通过该路径获取OS信息。
  2. 你看到的kind字段返回functionApp是因为该计划被配置为托管函数应用,kind字段会包含前缀标识(如functionApp),操作系统信息作为后缀存在于逗号分隔的字符串中。
  3. properties.reserved是Azure区分App Service Plan操作系统的原生字段,比解析kind字段更可靠,不会受计划用途(Web/函数)的影响。

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:37:25