Оператор выбора Powershell

forEach($subscription in Get-AzureRmSubscription) {
Select-AzureRmSubscription -SubscriptionId $subscription.Id | Out-Null
Get-AzurermVM -Status | select $subscription.Name, ResourceGroupName, Name, 
PowerState | ConvertTo-Csv -NoTypeInformation -Delimiter "|"}

Я пытаюсь вернуть результаты этого запроса, но он не включает имя подписки в результаты. Он показывает это в шапке таблицы, но не в каждой строке результатов. Он должен отображаться в каждой строке, но он пуст для первого столбца в каждой строке. Я предполагаю, что это связано с тем, что переменная подписки не является частью свойств -Status, но показывает ее в заголовке таблицы?


person Alex    schedule 26.07.2018    source источник


Ответы (1)


Если вы хотите включить фиксированное значение в качестве свойства настраиваемых объектов, выводимых модулем
Select-Object cmdlet (select — это встроенный псевдоним), вы должны использовать вычисляемое свойство:

... | Select-Object @{ n='SubscriptionName'; e={ $subscription.Name } }, 
                    ResourceGroupName, 
                    Name, 
                    PowerState | ...

Напротив, использование $subscription.Name само по себе интерпретируется как имя свойства для доступа к каждому полученному входному объекту.

person mklement0    schedule 26.07.2018
comment
@Alex: С удовольствием; рад слышать, что это было полезно. - person mklement0; 27.07.2018