У меня есть учетная запись в Azure и разные подписки с другой группой ресурсов и другой виртуальной машиной. Я хотел бы знать, как я могу определить, какие из них не используются. Например, проверьте последнюю дату, когда виртуальная машина была запущена или использовалась пользователем с помощью сценария PowerShell.

0
Kamil 24 Сен 2018 в 17:49

2 ответа

Лучший ответ

Метод PowerShell

В PowerShell вы можете использовать следующую команду для запроса 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:

Используйте API виртуальных машин, чтобы получить список всех ваших виртуальных машин

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

Затем вызовите API просмотра экземпляра, чтобы получить последний известный статус экземпляра виртуальной машины.

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

Это даст вам тот же набор статусов, что и в методе PowerShell выше. InstanceViewStatus, который содержит Status и Time последнего состояния машины.

Вот пример 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"
    }
  ]
3
Jamie Pollard 25 Сен 2018 в 09:59

Насколько мне известно, вы можете проверять статус ВМ через группу ресурсов по очереди. Или все статусы ВМ в одной подписке. Но не все 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

Результат такой: введите описание изображения здесь

Для получения дополнительных сведений см. Get-AzureRmVM .

0
Charles Xu 25 Сен 2018 в 02:03