确定Microsoft Azure中的虚拟机状态和活动

时间:2018-09-24 14:49:42

标签: azure powershell

我有一个具有Azure帐户,并且具有不同的资源组和不同的虚拟机的不同订阅。我想知道如何确定哪些未使用。例如,使用Powershell脚本检查用户启动或使用虚拟机的最后日期。

3 个答案:

答案 0 :(得分:1)

PowerShell方法

在PowerShell中,您可以使用以下命令查询VM API。

您要查看配置状态和时间以及运行状态:

Connect-AzureRmAccount

Get-AzureRmVm | Get-AzureRmVm -Status | select ResourceGroupName, Name, @{n="Provisioned Time"; e={$_.Statuses[0].Time}}, @{n="Provisioned Status"; e={$_.Statuses[0].DisplayStatus}}, @{n="Running Status"; e={$_.Statuses[1].DisplayStatus}}

这将给出以下输出

ResourceGroupName  : RG-Name
Name               : VM-Name
Provisioned Time   : 27/06/2018 19:06:39
Provisioned Status : Provisioning succeeded
Running Status     : VM deallocated

ResourceGroupName  : RG-Name1
Name               : VM-Name1
Provisioned Time   : 27/06/2018 19:06:39
Provisioned Status : Provisioning succeeded
Running Status     : VM running

REST API方法

在PowerShell之外,您可以使用几个API调用相对轻松地做到这一点:

使用VM API获取所有VM的列表

https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/listall

然后调用Instance View API检索虚拟机的最新已知实例状态

https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/instanceview#instanceviewstatus

这将为您提供与上述PowerShell方法中相同的状态集。 InstanceViewStatus包含计算机的最后状态的StatusTime

这是我的其中一个VM的返回响应的状态部分的示例JSON:

  "statuses": [
    {
      "code": "ProvisioningState/succeeded",
      "level": "Info",
      "displayStatus": "Provisioning succeeded",
      "time": "2017-06-15T13:59:26.8578303+00:00"
    },
    {
      "code": "PowerState/running",
      "level": "Info",
      "displayStatus": "VM running"
    }
  ]

答案 1 :(得分:0)

据我所知,您可以通过资源组一个一个地检查VM状态。或一个订阅中的所有VM状态。但是,并非所有虚拟机都属于您。因此,我建议您逐一检查属于您的资源组。以及如下所示的PowerShell脚本:

# connect to Azure with your account
Connect-AzureRmAccount

# get all the subscriptions of yours in this account
Get-AzureRmSubscription

# select which subscription you want to check
Select-AzureRmSubscription -SubscriptionId yourSubscriptionId

# get the power status of the vm in one resource group
Get-AzureRmVM -ResourceGroupName yourResourceGroupName -Status

输出如下: enter image description here

有关更多详细信息,请参见Get-AzureRmVM

答案 2 :(得分:0)

在Azure资源图资源管理器中运行查询:

Resources
| project name, location, 
   PowerState=tostring(properties.extended.instanceView.powerState.code), type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc