如何从命令行获取 Azure 容器状态?
How can I get Azure container state from command line?
我想知道如何从命令行(Get-AzContainerGroup
或 az container list
)过滤容器组的 'State'。
在 Azure 门户中,此字段报告为“状态”。
但我无法从命令行获取它,似乎没有提供此字段。
Get-AzContainerGroup | fl
ResourceGroupName : rg-foo
Id : /subscriptions/foo/resourceGroups/foo/providers/Microsoft.ContainerInstance/containerGroups/test-01
Name : test-01
Type : Microsoft.ContainerInstance/containerGroups
Location : westeurope
Tags : {}
ProvisioningState : Succeeded
Containers : {test-01}
ImageRegistryCredentials : {}
RestartPolicy : OnFailure
IpAddress : 20.82.63.136
DnsNameLabel :
Fqdn :
Ports : {80}
OsType : Linux
Volumes : {}
State :
Events : {}
Identity :
我试过了:
Get-AzContainerGroup | Where-Object {$_.State -eq "Succeeded"}
但由于字段似乎被报告,它没有工作。
因此,您在 Azure 门户上看到的 状态 column/property 实际上转换为 properties.instanceView.state
Azure Container Instance。
虽然 Get-AzContainerGroup | fl *
的输出中出现了 属性,但它似乎没有被填充。但是,当传递 ResourceGroupName
和 Name
参数时,您会看到 它显示 !
再深入一点,这是因为 Get-AzContainerGroup
cmdlet 在后台调用 Container Groups - List REST API,它没有 instanceView
属性 在响应中。
然而,Get-AzContainerGroup -ResourceGroupName <Resource-Group-Name> -Name <ContainerGroup-Name>
调用 Container Groups - Get REST API returns 所有扩展属性。
因此,要解决此问题,您可以 运行 以下代码段:
# List all container groups in the current subscription
# Equivalent to [Container Groups - List]
$AllContainerGroups = Get-AzContainerGroup
# Initialize an empty array to hold all container group objects with their extended properties
$AllContainerGroupsExtended = @()
foreach($ContainerGroup in $AllContainerGroups)
{
# Gets a specific container group
# Equivalent to [Container Groups - Get]
$ContainerGroupExtended = Get-AzContainerGroup -ResourceGroupName $ContainerGroup.Id.Split('/')[4] -Name $ContainerGroup.Name
$AllContainerGroupsExtended += $ContainerGroupExtended
}
# You can now filter the result as needed
$AllContainerGroupsExtended | Where-Object {$_.InstanceViewState -eq "Stopped"}
我想知道如何从命令行(Get-AzContainerGroup
或 az container list
)过滤容器组的 'State'。
在 Azure 门户中,此字段报告为“状态”。
但我无法从命令行获取它,似乎没有提供此字段。
Get-AzContainerGroup | fl
ResourceGroupName : rg-foo
Id : /subscriptions/foo/resourceGroups/foo/providers/Microsoft.ContainerInstance/containerGroups/test-01
Name : test-01
Type : Microsoft.ContainerInstance/containerGroups
Location : westeurope
Tags : {}
ProvisioningState : Succeeded
Containers : {test-01}
ImageRegistryCredentials : {}
RestartPolicy : OnFailure
IpAddress : 20.82.63.136
DnsNameLabel :
Fqdn :
Ports : {80}
OsType : Linux
Volumes : {}
State :
Events : {}
Identity :
我试过了:
Get-AzContainerGroup | Where-Object {$_.State -eq "Succeeded"}
但由于字段似乎被报告,它没有工作。
因此,您在 Azure 门户上看到的 状态 column/property 实际上转换为 properties.instanceView.state
Azure Container Instance。
虽然 Get-AzContainerGroup | fl *
的输出中出现了 属性,但它似乎没有被填充。但是,当传递 ResourceGroupName
和 Name
参数时,您会看到 它显示 !
再深入一点,这是因为 Get-AzContainerGroup
cmdlet 在后台调用 Container Groups - List REST API,它没有 instanceView
属性 在响应中。
然而,Get-AzContainerGroup -ResourceGroupName <Resource-Group-Name> -Name <ContainerGroup-Name>
调用 Container Groups - Get REST API returns 所有扩展属性。
因此,要解决此问题,您可以 运行 以下代码段:
# List all container groups in the current subscription
# Equivalent to [Container Groups - List]
$AllContainerGroups = Get-AzContainerGroup
# Initialize an empty array to hold all container group objects with their extended properties
$AllContainerGroupsExtended = @()
foreach($ContainerGroup in $AllContainerGroups)
{
# Gets a specific container group
# Equivalent to [Container Groups - Get]
$ContainerGroupExtended = Get-AzContainerGroup -ResourceGroupName $ContainerGroup.Id.Split('/')[4] -Name $ContainerGroup.Name
$AllContainerGroupsExtended += $ContainerGroupExtended
}
# You can now filter the result as needed
$AllContainerGroupsExtended | Where-Object {$_.InstanceViewState -eq "Stopped"}