Azure Powershell Query за връщане на подробности за VM

Опитвам се да напиша заявка за 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

Всякакви насоки са високо ценени.

Също така си струва да се отбележи, че моята таблица също трябва да съдържа както VM, управлявани от ресурси, така и класически VM (така че всички VM)

АКТУАЛИЗАЦИЯ

В момента моята заявка за 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
Кои ценности? Абонаментът, в който бъркам, няма изложено FQDN, така че не мога да тествам, че този бит се връща правилно. - 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 не ми предоставя FQDN и също така забелязах, че все още трябва да намеря начин да получа състоянието (Напр.: Работи, Спрян (освободен)) и т.н. - person Jeffrey; 17.09.2018