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, но показывает ли она это в заголовке таблицы?

1 ответ

Решение

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

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

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

Другие вопросы по тегам