Запрос Azure Powershell для возврата сведений о виртуальной машине

Я пытаюсь написать запрос powershell, чтобы вернуть следующую таблицу:

NAME    STATUS  RESOURCE GROUP  VMSIZE  SIZEREASON (TAG)    LOCATION    PUBLIC DNS NAME

Я могу использовать Get-AzureRmVM | Select-Object Name, ResourceGroupName, Location, но когда я пытаюсь добавить VmSize, столбец есть, но без значений.

Если я запускаю только Get-AzureRmVM, я получаю VmSize, поэтому я не понимаю, почему я не могу его выбрать.

Мне также нужно придумать, как добавить в Status, SIZEREASON (TAG), PUBLIC DNS NAME

Любое руководство наиболее ценится.

Также стоит отметить, что моя таблица также должна содержать как виртуальные машины, управляемые ресурсами, так и классические виртуальные машины (таким образом, все виртуальные машины).

ОБНОВЛЕНИЕ

Мой запрос Powershell в настоящее время:

Get-AzureRmVm `
  | Select-Object ResourceGroupName `
                , Name `
                , Location `
                , @{Name="VmSize"; Expression={$_.ToPSVirtualMachine().HardwareProfile.VmSize}} `
                , @{Name="SizeReason(Tag)"; Expression={$_.ToPSVirtualMachine().Tags.Values}} `
                , FullyQualifiedDomainName `
   | Format-Table

Нерешенными проблемами являются:

  1. FullyQualifiedDomainName не работает
  2. Мне также не хватает статуса (например: работает, остановлен (освобожден) и т. д.)

person Jeffrey    schedule 17.09.2018    source источник
comment
Проверьте вывод Get-AzureRmVM | Get-Member   -  person gvee    schedule 17.09.2018
comment
Я также сделал это, но не вижу свойства с именем VmSize, хотя простой запуск Get-AzureRmVM дает мне VmSize.   -  person Jeffrey    schedule 17.09.2018


Ответы (1)


Это было сложнее, чем я ожидал....

Get-AzureRmVm | Select-Object @{Name="VmSize"; Expression={$_.ToPSVirtualMachine().HardwareProfile.VmSize}}
person gvee    schedule 17.09.2018
comment
Это определенно указало мне правильное направление, оно также дало мне то, что мне нужно для тега, единственное, что мне нужно сейчас решить, это как получить общедоступное DNS-имя в таблице (FQDN), поэтому в настоящее время у меня есть Get-AzureRmVm | Select-Object ResourceGroupName, Name, Location, @{Name="VmSize"; Expression={$_.ToPSVirtualMachine().HardwareProfile.VmSize}}, @{Name="SizeReason(Tag)"; Expression={$_.ToPSVirtualMachine().Tags.Values}} | Format-Table - person Jeffrey; 17.09.2018
comment
@Jeffrey FullyQualifiedDomainName — легкодоступное свойство: Get-AzureRmVM | Get-Member | Where-Object Name -EQ FullyQualifiedDomainName - person gvee; 17.09.2018
comment
Так оно и есть, но тогда запуск этого не возвращает значения Get-AzureRmVm | Select-Object ResourceGroupName, Name, Location, @{Name="VmSize"; Expression={$_.ToPSVirtualMachine().HardwareProfile.VmSize}}, @{Name="SizeReason(Tag)"; Expression={$_.ToPSVirtualMachine().Tags.Values}}, FullyQualifiedDomainName | Format-Table - person Jeffrey; 17.09.2018
comment
Какие ценности? Подписка, с которой я работаю, не имеет открытого доменного имени, поэтому я не могу проверить правильность возврата этого бита. - person gvee; 17.09.2018
comment
Извините, если я не очень ясно. Get-AzureRmVm | Select-Object ResourceGroupName, Name, Location, @{Name="VmSize"; Expression={$_.ToPSVirtualMachine().HardwareProfile.VmSize}}, @{Name="SizeReason(Tag)"; Expression={$_.ToPSVirtualMachine().Tags.Values}}, FullyQualifiedDomainName | Format-Table не предоставляет мне полное доменное имя, и я также заметил, что мне все еще нужно найти способ получить статус (например, работает, остановлен (освобожден)) и т. д. - person Jeffrey; 17.09.2018