如何通过Azure CLI获取已启用Service Principals的正确方法?
获取已启用Azure服务主体(Service Principal)的正确方法
你遇到的问题主要有两个原因:一是accountEnabled属性是布尔值(而非字符串),二是Azure CLI返回的JSON属性名是小驼峰accountEnabled,且输出需要先转为PowerShell对象才能正确筛选。下面是两种可行的解决方法:
方法一:修正PowerShell筛选逻辑
先将Azure CLI的JSON输出转换为PowerShell对象,再匹配布尔类型的true:
az ad sp list | ConvertFrom-Json | Where-Object { $_.accountEnabled -eq $true }
方法二:使用Azure CLI内置筛选(更高效)
直接通过--filter参数在服务端完成筛选,无需本地处理,性能更优:
az ad sp list --filter "accountEnabled eq true"
额外说明
- 确认属性名大小写:Azure CLI返回的属性是小驼峰
accountEnabled,不要写成首字母大写的AccountEnabled; - 布尔值无需加引号:
$true是PowerShell的布尔常量,和JSON里的布尔值true对应,用字符串'true'匹配会失败。
内容的提问来源于stack exchange,提问作者not_a_generic_user
相关产品推荐
相关产品推荐

